首页新闻找找看学习计划

ASP.NET MVC5 缓存(OutputCacheAttribute )在ie中无效

0
悬赏园豆:100 [已解决问题] 解决于 2017-06-27 10:12
[OutputCache(Duration = 60,VaryByParam ="none")]

如上设置后在chrome有效 ,IE无效。

如上图,chrome在第二次后刷新都是返回304,而ie却一直返回200,如下图

"Vary" header使缓存无效了吗?我该如何解决让ie也有缓存呢?

问题补充:

又让我疑惑的是 :我设置了一个五秒的缓存的页面,页面显示当前时间。在ie下测试 虽然还是返回200(谷歌浏览器返回304),但是效果确实有的,五秒内刷新它时间不变化,五秒后刷新发生变化。

mint8794的主页 mint8794 | 初学一级 | 园豆:116
提问于:2017-06-26 15:50
< >
分享
最佳答案
0

早年看dudu说的过应该这样加,你可以试试,我不确定:

[OutputCache(Duration = 2000)]
public ActionResult NewDetail(int id)
{
Response.Cache.SetOmitVaryStar(true);

return View(model);

}

 

红色部分是重点

收获园豆:100
luxianai | 初学一级 |园豆:108 | 2017-06-26 18:07

 看了下dudu的文章,我这个情况和他好像不太一样。原因是因为IE 忽略Vary https://blogs.msdn.microsoft.com/ieinternals/2009/06/17/vary-with-care/

但是Response.Cache.SetOmitVaryStar(true); 去掉了IE忽视的Vary:*;也解决了问题。

如果不去掉Vary:*响应头 要包含 ETag.

System.Web.HttpContext curContext = System.Web.HttpContext.Current;
curContext.Response.Cache.SetETag("ie-is-always-special");
mint8794 | 园豆:116 (初学一级) | 2017-06-27 10:12
其他回答(1)
0

要抓包看.并且输出缓存我记得有几个头.有兼容问题的

吴瑞祥 | 园豆:28731 (高人七级) | 2017-06-26 15:58

您可以说的详细点么~

支持(0) 反对(0) mint8794 | 园豆:116 (初学一级) | 2017-06-26 16:04

是指cache吗?  兼容问题具体是指什么呢,想知道具体原因和解决方案

支持(0) 反对(0) mint8794 | 园豆:116 (初学一级) | 2017-06-26 16:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册