首页 文章

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

提问于
浏览
4

好吧,我正在研究浏览器缓存并编写节点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 回答

  • 1

    Yes ,200对304状态代码始终取决于资源是否具有"expired" . 你是对的,状态代码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文件中并不重要 .

相关问题