gpt4 book ai didi

asp.net-mvc - ASP.NET MVC缓存如何处理AJAX请求?

转载 作者:行者123 更新时间:2023-12-04 06:27:40 25 4
gpt4 key购买 nike

我刚刚开始研究缓存以提高性能,并对缓存AJAX调用有疑问。

我有一个用于查询Twitter,然后返回结果的操作。当用户按下按钮时,它会加载旋转的gif,同时转到执行查询的操作,然后返回部分 View 。然后,jQuery使用 View 中的HTML响应更新div。通常,此过程大约需要5秒钟。然后,他们有一个更多按钮,该按钮会关闭以获取更多结果。

如果将CachingAttribute放在此操作上会发生什么?我知道我可以尝试,但是我只想从技术角度进行解释。

谢谢

这是我的Javascript:

$('#blogEntryList #moreLink').live("click", function() {


$('#morespan').toggle();
$('#loader').toggle();

$.get($(this).attr("href"), function(response) {
$('#blogEntryList ol').append($("ol", response).html());
$('#blogEntryList #moreLink').replaceWith($("#moreLink", response));
$('#loader').hide();
$('#morespan').show();
});
return false;
});

这是我修改过的 Action :
[OutputCache(
Location = OutputCacheLocation.Server,
Duration = 100,
VaryByParam = "")]
public ActionResult BlogPosts(int? entryCount)
{
if (!entryCount.HasValue)
entryCount = defaultEntryCount;

int page = entryCount.Value / defaultEntryCount;

IEnumerable<BlogData> pagedEntries = GetLatestEntries(page, defaultEntryCount);

if (entryCount < totalItems)
AddMoreUrlToViewData(entryCount.Value);

return View("BlogEntries", pagedEntries);
}

最佳答案

它是这样工作的:假定在服务器端未指定缓存,默认情况下,浏览器将缓存GET请求,而未缓存POST请求,除非您在发送AJAX请求时指定cache: true属性,该属性允许您覆盖客户端缓存策略。

现在,在服务器端,您可以使用 [OutputCache] 装饰 Controller Action
这将允许您定义不同的缓存策略。您可以在服务器,下游代理服务器或客户端上保留高速缓存。您还可以管理不同的到期策略。

因此,让我们通过一个例子来说明这一点:

[OutputCache(
Location = OutputCacheLocation.Server,
Duration = 10,
VaryByParam = "")]
public ActionResult Hello()
{
return Content(DateTime.Now.ToLongTimeString(), "text/plain");
}

在客户端:
$.ajax({
url: '/home/hello',
type: 'post',
success: function (result) {
alert(result);
}
});

该 Controller 操作的结果将在服务器上缓存10秒钟。这意味着服务器将在每个请求上被命中,但是如果存在缓存版本,则不会执行该操作,并且将直接从此缓存中提供服务。在第一个命中 Controller Action 的请求之后的10秒后,缓存将过期,并且重复相同的过程。

关于asp.net-mvc - ASP.NET MVC缓存如何处理AJAX请求?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3841774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com