我只是開始尋找緩存來提高性能,並對緩存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