为什么此请求返回200(来自缓存)而其他请求返回304?

时间:2016-11-21 07:34:32

标签: html css node.js caching frontend

我正在使用浏览器缓存并编写节点http服务器来帮助我学习,我使用了缓存控制和最后修改。然后在Chrome中输入此网址,我只需按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? 那是对的吗?

1 个答案:

答案 0 :(得分:2)

,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响应 - 在网络选项卡中,单击一个请求,然后在右侧单击响应。您可以看到服务器为浏览器提供的到期值。检查资源是否有不同的max-age,或者它们是否有不同的last-modified。我敢肯定,在这种情况下,jpg在CSS文件中并不重要。