【发布时间】:2014-08-27 14:25:05
【问题描述】:
Etag 提供了与 FF 和 chrome 配合使用的缓存验证,但 IE 似乎忽略了 Etag 值并始终返回缓存的响应。
服务器响应是:
HTTP/1.1 200 OK
Date: Mon, 07 Jul 2014 06:01:57 GMT
Content-Type: application/json
ETag: a7628382056ddd13b7e06991571fd3ad
Content-Encoding: gzip
Content-Length: 4360
当客户端发送条件获取请求时
If-None-Match: 71fb49ecd6f85545693dec0e78ae2131
请求根本没有发送,IE 返回缓存的响应。 ETag 值相同时透明,ETag 不同时出现问题。
对我有用的唯一解决方案是添加标题
Cache-Control: no-cache
我监控了网络,它强制 IE 验证 ETag 值。
问题解决了!
但是我没有找到任何官方解决方案来解决这个问题。我使用帖子 Make IE to cache resources but always revalidate 作为参考,但大部分信息与我的问题无关。
如果您有其他想法或建议,请分享
【问题讨论】:
-
您的服务器可能正在返回一个最近的
Last-Modified标头值,因此 IE 相信它在不久的将来不会改变。no-cache技术是有效的,您需要的唯一官方文档是RFC 2616(或superceding one)。另一种不太可靠的技术是在 URL 中包含一个从未被同一个客户端使用过的查询字符串,作为一个不好的副作用,它还会用不会被重用的东西填充缓存。
标签: internet-explorer caching etag