我只是开始寻找缓存来提高性能,并对缓存AJAX调用有一个问题。ASP.NET MVC缓存如何为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;
});
这里是我的修改操作:
[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);
}
因此,当用户在我的情况下点击更多数据时,它会一次又一次返回前10个结果,直到缓存过期结束?在这种情况下,我可能不想使用缓存,因为当他们点击更多的数据时,它不能被缓存 – Jon 2010-10-01 20:03:39
@Jon,你可以使用'VaryByParam'属性来指定一个动作参数名称,例如页码。 – 2010-10-02 08:49:36
Can VaryByParam可以包含一个CSV值,例如/如果您有5个页码? – Jon 2010-10-02 10:00:07