2016-11-21 97 views
2

嗯,我正在浏览器缓存并编写一个节点http服务器来帮助我学习,我使用了缓存控制和最后修改。然后在Chrome中输入此URL,然后按F5查看缓存是否有效。最后,结果似乎有点奇怪。 one return 200 and the others return 304 as excepted为什么这个请求返回一个200(来自缓存)而其他的返回304?

Intro_1.jpg被style.css(background-image:url(../images/intro_1.jpg)加载; ) 那么为什么这个请求返回一个200(从缓存),但其他人返回304? 这是正确的吗?

回答

0

,200 vs 304状态码总是取决于资源是否“过期”。您是正确的,来自缓存的状态代码为200 - 没有发出HTTP请求 - 这就是为什么您在DevTools中看到来自内存缓存。状态码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文件中并不重要。

相关问题