我有专门针对IE 11的浏览器页面缓存问题, SomePage 页面始终从浏览器缓存加载。相同的页面在Edge,Chrome和FF中完美运行。
从JS函数调用页面如下:
$.ajaxJsonAntiForgery({
type: "POST",
url: '@Html.Raw(Url.Action("SomeAPI", "cntrl"))',
dataType: "json",
data: { model: model },
success: function (result) {
if (result.Success) {
window.location = '@Html.Raw(Url.Action("SomePage", "cntrl"))';
...
我尝试了以下方法:
使用URL附加一些随机数。 - 没用?
在操作方法中添加了以下代码: - 无法正常工作
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Response.Cache.SetExpires(DateTime.UtcNow.AddDays(-1));
Response.Cache.SetMaxAge(TimeSpan.Zero);
Response.Cache.SetRevalidation(HttpCacheRevalidation.AllCaches);
在Fiddler中我可以看到以下标题:
答案 0 :(得分:1)
您可以全局关闭缓存。或者通过装饰控制器中的动作
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
Public ActionResult SomeApi(string param){
...
}
在ASP.NET MVC中,您可以使用OutputCacheAttribute属性进行标记 要缓存其输出的操作方法。如果你标记一个 控制器使用OutputCacheAttribute属性,输出全部 控制器中的操作方法将被缓存[或不缓存,具体取决于属性值]。 MSDN Article
另外值得注意的是:如果您的页面实际上没有更改,那么ASP.NET非常智能,可以使用缓存页面来提高速度。
尝试上述故障排除步骤后更新。 在调用之前设置Ajax怎么样?
$.ajaxSetup({ cache: false});