Jon*_*Jon 8 asp.net-mvc caching asp.net-mvc-2
我刚刚开始研究缓存以提高性能,并对缓存AJAX调用提出疑问.
我有一个动作,用于查询twitter,然后返回结果.在用户按下按钮的时刻,它加载旋转的gif,同时进入动作以进行查询,然后返回局部视图.然后,jQuery使用视图中的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;
});
Run Code Online (Sandbox Code Playgroud)
这是我修改过的动作:
[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);
}
Run Code Online (Sandbox Code Playgroud)
Dar*_*rov 12
以下是它的工作原理:假设在服务器端没有指定缓存,默认情况下,GET请求将由浏览器缓存,POST请求不缓存,除非您cache: true在发送允许覆盖客户端缓存策略的AJAX请求时指定该属性.
现在在服务器端,您可以使用[OutputCache]
它来装饰控制器操作,这将允许您定义不同的缓存策略.您可以在服务器,下游代理服务器或客户端上保留缓存.您还可以管理不同的过期策略.
让我们通过一个例子来说明这一点:
[OutputCache(
Location = OutputCacheLocation.Server,
Duration = 10,
VaryByParam = "")]
public ActionResult Hello()
{
return Content(DateTime.Now.ToLongTimeString(), "text/plain");
}
Run Code Online (Sandbox Code Playgroud)
在客户端:
$.ajax({
url: '/home/hello',
type: 'post',
success: function (result) {
alert(result);
}
});
Run Code Online (Sandbox Code Playgroud)
此控制器操作的结果将缓存在服务器上10秒钟.这意味着服务器将在每个请求中被命中,但如果存在缓存版本,则不会执行该操作,并且将直接从此缓存提供服务.在第一个请求达到控制器操作的10秒后,缓存将过期并重复相同的过程.
| 归档时间: |
|
| 查看次数: |
4977 次 |
| 最近记录: |