HTTP缓存 - 检查服务器,始终发送If-Modified-Since

时间:2009-12-16 20:47:45

标签: http caching

我有一个用户生成的资源,因此在不可预测的时间进行更改(例如,用户上传word文档的新版本)。我希望浏览器缓存此资源并在每个请求上使用服务器验证其缓存(即始终发送If-Modified-Since标头)。

从测试开始,我发现当我在响应头中使用“Cache-Control:no-cache”时,Firefox会正确处理这个问题。但是,Internet Explorer 7未在其请求标头中发送“If-Modified-Since”。

“Cache-Control:no-cache”能否实现我在开头所描述的内容?如果没有,我能做些什么来实现我在浏览器中描述的内容吗?

感谢。

1 个答案:

答案 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是否仍能正常运行。