从ajax get返回的Cache MVC Partial View

时间:2012-07-25 12:57:06

标签: asp.net-mvc-3 jquery asp.net-mvc-partialview

是否可以缓存从ajax get请求返回的MVC局部视图?

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

控制器方法:

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

获取视图的Ajax请求:

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

是否可以缓存我的“SignIn”视图,以便每次用户点击它时,都不必返回服务器再次从控制器获取视图?

2 个答案:

答案 0 :(得分:3)

这会缓存服务器上的视图 - 限制服务器负载 -

将您的操作更改为:

public class Home : Controller
{
    // You can change this duration to whatever you want (in seconds)
    [OutputCache(Duration = 6000)] 
    public ActionResult SignIn()
    {
        return View("SignIn");
    }
}

您的AJAX请求保持不变:

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

答案 1 :(得分:1)

也许将结果存储在本地声明的javascript变量中。例如(伪代码)..

var PageState = {};
PageState.CachedView = function(){ $.get('/Home/SignIn', function (data) { $('.content').html(data); }); }

  $(document).ready(function(){
    $("#myButton").click(function(){ $("#myDialogContents").html(PageState.CachedView);
  });

我要注意的一件事是在显示缓存的html时清除文本框,除非您希望保留用户名。