浏览器不缓存资源

时间:2012-02-13 14:20:48

标签: browser firebug cache-control

我使用Firebug检查了我的网站:每次重新加载页面时,都会重新加载所有资源。 (我不是通过点击浏览器中的“重新加载”,而是使用主页上通向主页的链接)

仅举一个例子: base.css 每次加载页面时都会显示“200 ok”状态。

The response header says: 
Cache-Control   max-age=5184000, private
Last-Modified   10 Feb 2012 20:00:00 GMT

从我现在读到的所有内容来看,这应该足以让浏览器缓存此文件。

我在两台不同的机器上使用两个不同版本的Firefox检查了这一点 - 但结果相同。

让浏览器缓存文件缺少什么?

令人困惑的是,对于:cache,我可以看到浏览器已将base.css放入其磁盘缓存中,并在每次重新加载页面时递增获取计数。萤火虫在玩恶作剧吗?

2 个答案:

答案 0 :(得分:0)

Yogi,我附上了我在浏览器中看到的截图(见下文或点击此网址http://i.stack.imgur.com/eT0gU.png)。有一些缓存资源(如widget76.css),但base.css没有像你说的那样缓存。

我发现了一些事情:

  1. 基本CSS文件标记为Cache-Control:private。我知道这是代理人,但从来没有。
  2. 基本CSS未明确包含在HTML标头中,而是从另一个css文件导入(可能不相关)。
  3. widget76.css有一个“If-Modified-Since”标题http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html,它允许有效的缓存策略。无法在图像中看到,但这是请求标头的内容:

    If-Modified-Since:Wed,01 Feb 2012 12:31:58 GMT

    缓存控制:max-age = 0

  4. 总而言之,我认为缺少的If-Modified-Since标头会产生不同。

    Firefox Net tab of CSS resources

答案 1 :(得分:0)

我的初始问题的答案相当简单: 在firebugs网络分析的默认模式下,启用了“BFCache Answers”。结果是列表中显示了对缓存的请求,这给人的印象是它们来自服务器。

感谢您的帮助,DmitryB!