【ASP.NET MVC 】让@Ajax.ActionLink获取的数据不进Cache

时间:2020-12-13 20:39:55

刚玩这个东西的时候,发现IE会进Cache,不管怎么删除,修改,后台删除了,前台还是一样,找了一下,HTML5只提供了

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate">,ok,这个是有效果的,如果你的浏览器支持HTML标签的话,

如果你用Jquery来做Ajax,我知道有两种办法去掉Cache:

  1. 在load的时候调用这个:jQuery.ajaxSetup ({cache:false}) 。

  2.$.ajax({cache:false}),这里省略了无数多的参数,设置一下这个,该请求就不会存入Cache.

还有一种客户端曲线救国的方法:

var url = 'http://url/';
url += '?temp=' + new Date().getTime();
url += '?temp=' + Math.random();

说句心理话,我是真心受不了这个,在我的概念里,既然你能想到的,那些开发此类框架的人肯定能想到,如果他们没有想到,就应该发个EMAIL“骂“他们,何况清理Cache如此常见的问题。

所以既然我用ASP.NET MVC这个东西,我相信微软的这个团队一定会把这个问题解决掉,而不是那么麻烦。

//界面代码
@Ajax.ActionLink("Users", "GetUsers","Home",new AjaxOptions()
{
UpdateTargetId = "partialViewShow",
HttpMethod = "GET",
InsertionMode = InsertionMode.Replace
})
       [OutputCache(NoStore = true, Duration = , VaryByParam = "*")]
public PartialViewResult GetUsers()
{
//dosomething.......
return PartialView("UsersView");
}

主要看这个标签,这个标签可以帮你清除Cache,还能做自定义的Cache清理,Timeout什么的:OutputCache各个参数的说明