2012-07-27 19 views
2

這是我的場景。我打電話指向返回的局部視圖控制器方法的網址:在客戶端上緩存/查看MVC部分視圖的模式

控制器的方法:

public ActionResult UserProfile() { return View("UserProfile"); } 

Ajax請求得到的觀點:

$.get('/Home/UserProfile', function (data) { $('.content').html(data); }); 

我想緩存我的「UserProfile」視圖,以便每次用戶點擊它時,都不必返回服務器再次從控制器獲取視圖。

我還希望能夠確定視圖在從服務器獲取之前是否已緩存在客戶端上,並且如果已經從緩存中取出,並將其注入到我的佈局中的div上。

有沒有人做過類似的事情?

+0

如果你實現這樣的事情,不要忘記在註銷(或超時等)時清除緩存的清除, – Manatherin 2012-07-27 20:23:20

回答

1

您可以使用[OutputCache]屬性。它允許您指定要緩存視圖的持續時間以及緩存的位置。例如,讓我們假設你想緩存控制器操作的結果對客戶端瀏覽器30秒時:

[OutputCache(Duration = 30, Location = OutputCacheLocation.Client)] 
public ActionResult UserProfile() 
{ 
    return PartialView(); 
} 

現在你可能會引發許多AJAX請求,但只在一個30秒會被髮送到服務器:

window.setInterval(function() { 
    $.get('/Home/UserProfile', function (data) { 
     $('.content').html(data); 
    }); 
}, 4000);