3

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

IE6 是否也有特定的 HTTP 标头?

4

6 回答 6

8

Cache-Control: private, max-age=0应该修复它。在经典 ASP 中,这是使用Response.Expires=-1.

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

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

于 2008-09-04T07:19:15.170 回答
1

你必须要小心。如果您通过 XMLHttpRequest (XHR) 使用 AJAX,则 ie6 不遵守标头中设置的缓存“建议”。

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

http://test.com?nonce=0123 

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

于 2008-10-15T01:37:44.227 回答
0

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

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

于 2008-09-03T19:05:24.450 回答
0

一点说明:根据经验,我知道即使通过Ctrl-强制重新加载页面,IE6 也会从缓存中加载 Javascript F5。因此,如果您正在使用 Javascript,请始终清空缓存。

IE Web 开发人员工具栏可以在这方面提供极大的帮助。有一个用于清除缓存的按钮。

于 2008-09-04T07:24:48.057 回答
0

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

于 2008-09-08T12:41:13.613 回答
0

尽管您使用“Cache-Control: no-cache”,但始终会缓存具有“Content-Encoding: gzip”的内容

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

你也可以只为 IE6 禁用 gzip

于 2013-06-13T15:09:06.240 回答