IE6和缓存

问题描述:

看来,IE6忽略通过HTTP Header发送任何形式的缓存失效的,我试过设置编译指示无缓存和缓存过期设置为当前时间,但在IE6,回击总是会拉起我正在处理的网页的缓存版本。IE6和缓存

是否有IE6不听太具体的HTTP头?

Cache-Control: private, max-age=0的应该修复它。从经典的ASP这是用Response.Expires=-1完成。

请记住,仅当您的服务器正在提供关闭缓存的页面进行测试时,并不意味着浏览器会遵循这一点,因为当它有一个旧的缓存页面时,它被告知可以缓存。清除缓存或使用F5强制重新加载该页面。

另外,对于服务器正在提供缓存内容的情况,您可以使用 Ctrl + F5来指示服务器不从缓存提供服务。

+2

F5原因Pragma:将no-cache添加到请求头中。除此标题外,Ctrl-F5还可以取消if-modified-since和if-none-match标题,从而删除源服务器选项以发送304 Not Modified响应。缓存控制不会在请求头中发送。 – AnthonyWJones 2008-09-19 18:19:50

您是否尝试过在标头中设置ETag?他们是一个非常可靠的方法来表明内容发生了变化w3c Spec & Wikipedia

除此之外,多了几分粗暴的方式是随机的查询字符串参数追加请求,如当前的UNIX时间戳。正如我所说,原油,但随后IE6是不是最微妙的野兽

稍微注意一下:根据经验,我知道IE6会从缓存中,即使*通过按Ctrl-F5刷新页面加载的JavaScript。所以如果你在使用Javascript,总是清空缓存。

IE开发人员工具栏可以帮助这个巨大的。有一个清除缓存的按钮。

你一定要小心。如果您通过XMLHttpRequest(XHR)使用AJAX,则标头中设置的缓存“建议”不受ie6的尊重。

解决方法是使用一个随机数追加到AJAX请求中使用的URL查询。例如:

http://test.com?nonce=

一个很好的发生器,这是UTC()函数,返回给用户的浏览器的唯一timestame ...也就是说,除非他们乱用他们的系统时钟。

内容与“内容编码:gzip”永远缓存尽管你用“缓存控制:无缓存”

http://support.microsoft.com/kb/321722

你也可以禁用它只是IE6