IE6和缓存

时间:2020-03-05 18:47:12  来源:igfitidea点击:

看来IE6会忽略通过http标头发送的任何形式的缓存失效,我尝试将Pragma设置为No Cache并将Cache Expiration设置为当前时间,但是在IE6中,回击将始终拉出页面的缓存版本正在努力。

IE6是否也监听特定的HTTP标头?

解决方案

回答

我们是否尝试过在标头中设置ETag?它们是表明内容已更改的一种非常可靠的方式,w3c Spec和Wikipedia

除此之外,更简单的方法是向请求添加随机查询字符串参数,例如当前的unix时间戳。就像我说的那样,简陋,但IE6并不是最微妙的野兽

回答

Cache-Control:private,max-age = 0应该解决它。在经典的ASP中,这是通过Response.Expires = -1完成的。

测试时请记住,仅因为服务器正在关闭缓存的情况下提供页面并不意味着浏览器会服从于当它具有旧的缓存页面时被告知可以缓存的服从。清除缓存或者使用F5强制重新加载该页面。

另外,对于服务器正在提供缓存内容的那些情况,我们可以使用<KBD> Ctrl + F5指示服务器不要从缓存中提供内容。

回答

一点注意:根据经验,即使强制通过ctrl-f5重新加载页面,IE6也会从缓存中加载Javascript。因此,如果我们使用Javascript,请务必清空缓存。

IE Web开发人员工具栏可以对此提供巨大帮助。有一个用于清除缓存的按钮。

回答

请参阅问题:确保未在所有浏览器中缓存网页。如何在所有浏览器中控制网页缓存?我认为这也应该有助于解决问题。

回答

你必须要小心。如果通过XMLHttpRequest(XHR)使用AJAX,则头文件中设置的缓存"建议"不受ie6的尊重。

解决方法是在AJAX请求中使用的网址查询中添加一个随机数。例如:

http://test.com?nonce=0123

一个很好的生成器是UTC()函数,该函数为用户的浏览器返回唯一的时间戳记,也就是说,除非他们弄乱了系统时钟。