在我看来,当我从页面A浏览到页面B时,如果B页面在A页面中具有相同的js / css / img / etc资源,浏览器应该使用A页面中的缓存,因为它位于同一会话中,所以这将结束304请求(如果resouces已设置exprie时间,它将不会请求)。
但是,我今天遇到了一个问题。
在Firefox中,当我浏览页面A时,firebug中的瀑布是
但是,当我点击链接转到页面B时,萤火虫中的瀑布是
仍然从服务器下载js / css,而不是302请求。
我的Firefox版本是4.0.1,缓存未禁用。
这种行为在Firefox中是否正确?
答案 0 :(得分:3)
您的意思是304 Not Modified
回复。
您只能在条件请求上获得该响应,如果使用相应的缓存标头响应了对同一URI的先前请求,则只会由浏览器发出该响应。
请参阅示例HTTP Caching,A Beginner's Guide to HTTP Cache Headers等。
答案 1 :(得分:1)
我通过添加缓存控制头来解决这个问题。 感谢@CodeCaster的建议。
在我的情况下,所有的js / css都是从Apache下载的。我为这些静态内容设置了expires头。
然而,这个旧版本的Firefox似乎触发了一个奇怪的请求,忽略了expires标记。