是否可以缓存从ajax get请求返回的MVC局部视图?
这是我的情景。我正在调用一个url,它指向一个返回局部视图的控制器方法:
控制器方法:
public ActionResult SignIn()
{
return View("SignIn");
}
获取视图的Ajax请求:
$.get('/Home/SignIn', function (data) { $('.content').html(data); });
是否可以缓存我的“SignIn”视图,以便每次用户点击它时,都不必返回服务器再次从控制器获取视图?
答案 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时清除文本框,除非您希望保留用户名。