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

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

有帮助吗?

解决方案

Cache-Control: private, max-age=0 应该修复它。在经典 ASP 中,这是通过以下方式完成的 Response.Expires=-1.

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

此外,对于服务器提供缓存内容的情况,您可以使用 Ctrl+F5 通知服务器不要从缓存中提供服务。

其他提示

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

修复方法是在 AJAX 请求中使用的 url 查询中附加一个随机数。例如:

http://test.com?nonce=0123 

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

您是否尝试过在标头中设置 ETag ?它们是表明内容已更改的非常可靠的方式 w3c 规范 & 维基百科

除此之外,更粗暴的方法是在请求中附加一个随机查询字符串参数,例如当前的 unix 时间戳。正如我所说,虽然很粗糙,但 IE6 并不是最狡猾的野兽

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

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

内容为“内容编码:尽管您使用“缓存控制:gzip”始终会被缓存:无缓存”

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

您还可以仅针对 IE6 禁用 gzip

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top