我有一个用户生成的资源,因此在不可预测的时间进行更改(例如,用户上传word文档的新版本)。我希望浏览器缓存此资源并在每个请求上使用服务器验证其缓存(即始终发送If-Modified-Since标头)。
从测试开始,我发现当我在响应头中使用“Cache-Control:no-cache”时,Firefox会正确处理这个问题。但是,Internet Explorer 7未在其请求标头中发送“If-Modified-Since”。
“Cache-Control:no-cache”能否实现我在开头所描述的内容?如果没有,我能做些什么来实现我在浏览器中描述的内容吗?
感谢。
答案 0 :(得分:3)
根据Microsoft(http://support.microsoft.com/kb/234067),您需要将Expires标头设置为-1,以便在Internet Explorer中正常工作。
从页面:
在许多情况下,Web服务器有一个或 服务器上更易变的页面 包含主题的信息 立即改变。这些页面 应该由服务器标记 Expires的值为“-1” 头。关于未来的要求 用户,通常是Internet Explorer 联系Web服务器以获取更新 该页通过条件 If-Modified-Since请求。
我认为重点是,如果IE有一个到期日期,它认为没有理由询问您资源是否已被修改,因为它的缓存副本应该“足够好”。
该页面还说IE支持Cache-control:no-cache,但不推荐使用。所以听起来它应该可行,但无论如何都要尝试Expires。
此外,其他谷歌搜索告诉我,浏览器应该发送If-Modified-Since一般,所以也许这就是Firefox的工作原理。尝试删除Cache-Control:no-cache以查看Firefox是否仍能正常运行。