0

在我看来,当我从 A 页面浏览到 B 页面时,如果 B 页面在 A 页面中有相同的 js/css/img/etc 资源,浏览器应该使用 A 页面的缓存,因为它在同一个会话中,所以这个将结束一个 304 请求(如果资源设置了过期时间,它将不会请求)。

然而,我今天遇到一个问题。

在 Firefox 中,当我浏览页面 A 时,firebug 中的瀑布是

页面A的瀑布

但是当我点击链接转到页面 B 时,萤火虫中的瀑布是

在此处输入图像描述

js/css 仍然是从服务器下载的,而不是 302 请求。

我的 Firefox 版本是 4.0.1,缓存没有禁用。

这种行为在 Firefox 中是否正确?

4

2 回答 2

3

你的意思是304 Not Modified回应。

您只能在有条件的请求上获得该响应,只有在对同一 URI 的先前请求使用适当的缓存标头响应时,浏览器才会发出该响应。

例如,请参阅HTTP 缓存HTTP 缓存标头初学者指南等。

于 2013-10-17T08:13:19.857 回答
1

我通过添加缓存控制标头来解决这个问题。感谢@CodeCaster 的建议。

在我的情况下,所有 js/css 都是从 Apache 下载的。我为这些静态内容设置了过期标头。

但是,这个旧版本的 Firefox 似乎触发了一个奇怪的请求,忽略了 expires 标签。

于 2013-10-17T12:23:04.877 回答