【亡羊补牢】计算机网络灵魂之问 第4期 响应状态码,200(from disk cache),200(from memory cache),304的区别

这是博主面向腾讯学习的面试题大整理系列,可以在如下github仓库Issues中通过 Labels 标签分类查看相关内容,同时欢迎大家指正可能的错误并且提出自己的解答,希望大家学的鱼块,春秋招顺利!

传送门:https://github.com/Chocolate1999/Front-end-learning-to-organize-notes

往期精选:

响应状态码,200(from disk cache),200(from memory cache),304的区别

这个属于HTTP缓存相关内容了,HTTP缓存,也可以叫浏览器缓存

浏览器缓存有两种:200 OK (from memory/disk cache) 和 304 Not Modified

1、200 OK (from memory/disk cache)

  • 这种缓存方式已经很普遍,大部分网站的静态文件都采用了,200 OK (from memory cache)或者200 OK (from disk cache)都是直接读取客户端的缓存,无需再请求服务器。一般是在Apache或者Nginx里设置,比如Nginx配置里会有类似这样的配置:
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${expires 30d;}location ~ .*\.(js|css)?${expires 12h;}

这样就可以给静态文件缓存了,在有效期内,浏览器会直接读取客户端的缓存,而不用再请求服务器,除非用户清除了缓存或者使用Ctrl+F5强制刷新了页面。

2、304 Not Modified(不会从服务器端获取数据,而是直接使用直接第一次200 ok时获取的缓存数据)

  • 304缓存和上面最大的区别是浏览器需要向服务器询问一次,如果服务器端认为没有内容更新,直接返回304状态码,无需返回body内容,浏览器就会直接取缓存内容输出,这样省掉了没必要的数据传输,也就提升了访问速度。

两个的区别是 200 OK (from disk cache) 是浏览器没有与服务器进行确认, 直接用浏览器缓存。304 是浏览器和服务器确认了一次缓存有效性,再启用缓存

禁止200 OK (from disk cache) 这个缓存的方法是,ajax 请求是带上参数 cache: false

完整状态码请查阅 MDN HTTP状态码

【作者:Chocolate】https://chocolate.blog.csdn.net/

学如逆水行舟,不进则退
上一篇:关于VMware虚拟机磁盘收缩的三种方法


下一篇:Failed to mount cd:///?devices=/dev/disk/by-id/ata-VMware_Virtual_SATA_CDRW_Drive_010000000000000000