2

这是我的场景。我正在调用一个指向返回部分视图的控制器方法的 url:

控制器方法:

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

获取视图的 Ajax 请求:

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

我想缓存我的“UserProfile”视图,以便每次用户单击它时,它不必返回服务器再次从控制器获取视图。

我还希望能够在从服务器获取视图之前确定视图是否已缓存在客户端上,如果有,请将其从缓存中取出并简单地将其注入到我的布局中的 div 中。

有没有人做过这样的事情?

4

1 回答 1

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);
于 2012-07-28T07:14:45.663 回答