当前位置:  开发笔记 > 后端 > 正文

在Chrome中进行测试时会过期标题

如何解决《在Chrome中进行测试时会过期标题》经验,为你挑选了0个好方法。

在这里对'Expires'标题感到非常困惑!有时它按预期工作 - 有时不工作.

我使用以下代码来设置我的到期标头.请注意,这是使用ASP.NET在MVC自定义属性中完成的 - 这在这里并不真正相关 - 但解释'filterContext'了来自何处.

HttpCachePolicyBase cache = filterContext.HttpContext.Response.Cache;
TimeSpan cacheDuration = TimeSpan.FromSeconds(Duration);

// my own custom header so we know what time it was
filterContext.HttpContext.Response.AddHeader("CurrentTime", DateTime.Now.ToString());

cache.SetCacheability(HttpCacheability.Public);
cache.SetExpires(DateTime.Now.Add(cacheDuration));
cache.SetMaxAge(cacheDuration);
cache.AppendCacheExtension("must-revalidate, proxy-revalidate");

这有时会给我这样的标题:

Cache-Control: public, must-revalidate, proxy-revalidate, max-age=413
Date: Wed, 18 Feb 2009 05:24:19 GMT
Expires: Wed, 18 Feb 2009 05:21:12 GMT
CurrentTime: 2/17/2009 9:21:12 PM

有时像这样:

Cache-Control: public, must-revalidate, proxy-revalidate, max-age=600
Date: Wed, 18 Feb 2009 05:27:55 GMT
Expires: Wed, 18 Feb 2009 05:27:55 GMT
CurrentTime: 2/17/2009 9:27:55 PM

我正在通过Fiddler运行一切,并观察何时重新请求事物以及何时来自浏览器缓存.

现在奇怪的是在IE中,缓存始终按预期工作.我的ASP.NET MVC操作方法的链接出现在Fiddler中,然后当我再次点击同一个链接时,它来自缓存.

但是在Chrome中,它有时会有时不会来自缓存!来自缓存我的意思是没有额外的HTTP请求.

例如,像这样的链接:

 http://ipv4.fiddler:62669/gallery/mainimage/2

将来自IE中的缓存,但回来时带有200 in chrome.然后有时在Chrome中,它来自缓存.我已经尝试清空浏览器缓存并再次尝试 - 每次都是相同的结果.

Chrome是否试图做一些"聪明"的事情而且只是悲惨地失败 - 或者我是否需要一个额外的标题?

我想知道的是,它是否与我的Expires标题日期在未来实际上没有任何关系.如果我查看谷歌的标题为他们托管的jQuery文件,我看到标题如下(在2010年到期 - 未来一年).

Cache-Control: public, max-age=31536000
Date: Wed, 18 Feb 2009 05:44:53 GMT
Expires: Thu, 18 Feb 2010 05:44:53 GMT

实际上不应该过期?

根据HTTP规范:

如果响应包括Expires头和max-age指令,则max-age指令会覆盖Expires头,即使Expires头更具限制性.对于给定的响应,此规则允许源服务器为HTTP/1.1(或更高版本)缓存提供比HTTP/1.0缓存更长的到期时间.如果某些HTTP/1.0缓存不正确地计算年龄或到期时间(可能是由于时钟不同步),这可能很有用.

因此,即使'Expires'与当前时间相同,Chrome似乎也应该尊重max-age指令,但它似乎并没有这样做.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有