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

Nat*_*tsu 5 html css frontend caching node.js

好吧,我正在使用浏览器缓存并编写一个节点http服务器来帮助我学习,我同时使用了缓存控制和最后修改。然后在Chrome中输入该网址,然后按F5即可查看缓存是否有效。最后,结果似乎有些奇怪。 一个返回200,其他返回304

Intro_1.jpg由style.css(background-image:url(../images/intro_1.jpg); )那么,为什么此请求返回200(来自缓存),而其他请求却返回304?那是对的吗?

Jam*_*son 5

是的,200 与 304 状态代码始终取决于资源是否“过期”。你是对的,状态代码 200 意味着来自缓存 - 没有发出 HTTP 请求 - 这就是你在 DevTools 中看到From Memory Cache的原因。状态码 304 表示缓存条目已过期,浏览器别无选择,只能发出 HTTP 请求来询问服务器是否进行了任何更改。服务器返回304状态码是告诉浏览器不需要下载新版本的资源并且可以继续使用相同的缓存条目的一种方式。

更多:HTTP 状态代码 200(缓存)与状态代码 304 之间有什么区别?

每个资源都有自己的超时值,因此有些资源可能会过期,而另一些则不会。您应该在 DevTool 中检查 HTTP 响应 - 在Network选项卡中,单击请求,然后在右侧单击Response。您可以看到服务器提供给浏览器的到期值。检查资源是否有不同max-age,或者是否有不同last-modified。我确信在这种情况下,jpg 位于 CSS 文件中并不重要。