关于浏览器缓存控制的疑惑,望大神解答

发布于 2022-09-02 20:03:33 字数 1212 浏览 15 评论 0

例如我有一张图片,原图地址:qiniu.com/demo.jpg

然后我通过百度CDN进行分发,分发地址:baiducdn.com/demo.jpg

我在本地网页中使用它:<img src="baiducdn.com/demo.jpg">

当我在chrome控制台进行调试的时候(没有禁用缓存),该图片的的头信息总是:Status Code:200 OK,完整的头信息如下:

Accept-Ranges:bytes
Access-Control-Allow-Origin:*
Access-Control-Expose-Headers:X-Log, X-Reqid
Access-Control-Max-Age:2592000
Cache-Control:max-age=31536000
CF-RAY:2ac289756cd938b9-FUO
Content-Length:9088859
Content-Transfer-Encoding:binary
Content-Type:image/gif
Date:Wed, 01 Jun 2016 12:06:00 GMT
ETag:"AFdd89ifx09ywWfdEa2rJT4R--Ax"
Expires:Thu, 01 Jun 2017 12:05:57 GMT
Last-Modified:Thu, 26 May 2016 09:36:33 GMT
Server:yunjiasu-nginx
X-Cache-Lookup:Hit From Upstream, Hit From Upstream, Hit From Upstream
X-Daa-Tunnel:hop_count=2, hop_count=1
X-Log:mc.g;FOPDC/404;FOPAGENT;IMAGE:659;FOPAGENT:675;dc.set:153;FOPDC:153;FOPDC;FOPDC;FOPG:833;io.rop:834;IO:836
X-Qiniu-Zone:0
X-Reqid:M7sAAG2y7Kgo9FMU

然后我有3个疑问,困扰我很久:

  1. 图片瞬间载入,应该是已缓存到本地,但为什么调试时Status Code是200

  2. 如果图片已经缓存到本地,那电脑处于离线状态时,图片为什么显示不出来?也就是说为什么不直接在本地加载

  3. 如果是服务器端通过ETag控制缓存,那么Status Code为什么是200而不是304?

希望大神能解惑,非常感谢

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

惜醉颜 2022-09-09 20:03:33
  • 如果是200(from cache),说明使用的是本地缓存(浏览器没有发送request请求)

  • 如果是304,说明是服务器只返回了304状态码(内容没有发生修改,这时浏览器发送了请求,但服务器并没有返回内容)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文