我正在使用适用于 Firefox 的 Google“Page Speed”插件来访问我的网站。
我页面上的某些组件显示为 HTTP 状态:
200 200(缓存) 304
Google 的“Page Speed”。
我感到困惑的是 200(缓存)和 304 之间的区别。
我多次刷新页面(但没有清除我的缓存),我的 favicon.ico 和一些图像似乎总是 status=200(缓存),而其他一些图像是 http 状态 304。
我不明白为什么会这样。
更新:
使用 Google“Page Speed”,我收到 http://example.com/favicon.ico 的“200(缓存)”以及http://cdn.example.com/js/ga.js
但是,我收到 http://cdn.example.com/js/combined.min.js 的 http 状态“304”
我不明白为什么我在同一目录/js/中有两个 JavaScript 文件,一个返回 HTTP 状态 304,另一个返回 200(缓存)状态代码。
最佳答案
代码为“200(缓存)”的项目是直接从您的浏览器缓存中实现的,这意味着对项目的原始请求返回时带有 header ,表明浏览器可以缓存它们(例如, future 日期 Expires
或 Cache-Control: max-age
header ),并且在您触发新请求时,那些缓存的对象仍存储在本地缓存中并且尚未过期。
另一方面,304 是服务器在浏览器检查文件自其缓存的最后一个版本以来是否被修改后的响应(答案是“否”)。
为了获得最佳网络性能,您最好为所有 Assets 设置一个远期 Expires:
或 Cache-Control: max-age
header ,然后当需要更改 Assets 时,更改 Assets 的实际文件名或将版本字符串附加到对该 Assets 的请求。这消除了发出任何请求的需要,除非 Assets 已从缓存中的版本明确更改(不需要 304 响应)。谷歌有 more details on correct use of long-term caching .
关于http - HTTP 状态代码 200(缓存)与状态代码 304 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1665082/