[OutputCache(Duration = 60,VaryByParam ="none")]
如上设置后在chrome有效 ,IE无效。
如上图,chrome在第二次后刷新都是返回304,而ie却一直返回200,如下图
是"Vary" header使缓存无效了吗?我该如何解决让ie也有缓存呢?
又让我疑惑的是 :我设置了一个五秒的缓存的页面,页面显示当前时间。在ie下测试 虽然还是返回200(谷歌浏览器返回304),但是效果确实有的,五秒内刷新它时间不变化,五秒后刷新发生变化。
早年看dudu说的过应该这样加,你可以试试,我不确定:
[OutputCache(Duration = 2000)]
public ActionResult NewDetail(int id)
{
Response.Cache.SetOmitVaryStar(true);
return View(model);
}
红色部分是重点
看了下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");
要抓包看.并且输出缓存我记得有几个头.有兼容问题的
您可以说的详细点么~
是指cache吗? 兼容问题具体是指什么呢,想知道具体原因和解决方案