【问题标题】:Why does this request return a 200(from cache) yet others return 304?为什么此请求返回 200(来自缓存)而其他请求返回 304?
【发布时间】:2017-04-04 12:56:11
【问题描述】:
好吧,我正在研究浏览器缓存并编写一个节点 http 服务器来帮助我学习,我同时使用了缓存控制和最后修改。然后在 Chrome 中输入这个 url,我直接按 F5 看看缓存是否有效。最后结果似乎有点奇怪。
one return 200 and the others return 304 as excepted
Intro_1.jpg 由 style.css (background-image:url(../images/intro_1.jpg) 加载; )
那么为什么这个请求返回 200(来自缓存)而其他请求返回 304?
那是对的吗?
【问题讨论】:
标签:
html
css
node.js
caching
frontend
【解决方案1】:
是,200 与 304 状态代码始终取决于资源是否“过期”。您是对的,状态码 200 表示来自缓存 - 没有发出 HTTP 请求 - 这就是您在 DevTools 中看到 From Memory Cache 的原因。状态码 304 表示缓存条目已过期,浏览器别无选择,只能发出 HTTP 请求询问服务器是否进行了任何更改。服务器返回状态码 304 是它告诉浏览器它不需要下载新版本的资源并且可以继续使用相同的缓存条目的一种方式。
更多:What is the difference between HTTP status code 200 (cache) vs status code 304?
每个资源都有自己的超时值,因此可能会有一些
会过期,而其他人不会。您应该在 DevTool 中检查 HTTP 响应——在 Network 选项卡中,单击一个请求,然后在右侧单击 Response。您可以看到服务器提供给浏览器的到期值。检查资源是否有不同的max-age,或者它们是否有不同的last-modified。我敢肯定,在这种情况下,jpg 是否在 CSS 文件中并不重要。