为什么这个请求返回一个200(从caching),但其他人返回304?

那么我正在浏览器caching,并写一个节点HTTP服务器,以帮助我学习,我使用caching控制和最后修改。 然后在Chrome中input这个url,我只需按下F5来查看caching是否有效。最后结果似乎有些奇怪。 一个返回200,其他返回304如例外

Intro_1.jpg是由style.css( background-image:url(../images/intro_1.jpg );)为什么这个请求返回一个200(从caching),但其他人返回304? 那是对的吗?

是的 ,200对304状态代码总是取决于资源是否“过期”。 你是正确的,一个状态代码为200意味着从caching – 没有HTTP请求,这就是为什么你看到 DevTools的内存caching 。 状态码304意味着caching条目已经过期,浏览器只好做出HTTP请求来询问服务器是否有任何更改。 服务器返回状态码304是告诉浏览器它不需要下载新版本的资源,并且可以继续使用相同的caching条目。

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

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