这是博主面向腾讯学习的面试题大整理系列,可以在如下github仓库Issues
中通过 Labels
标签分类查看相关内容,同时欢迎大家指正可能的错误并且提出自己的解答,希望大家学的鱼块,春秋招顺利!
传送门:https://github.com/Chocolate1999/Front-end-learning-to-organize-notes
往期精选:
- 【亡羊补牢】计算机网络灵魂之问 第1期 一道百度笔试题引发的血案 (有了IP地址和子网掩码,广播地址还求不出来?)
- 【亡羊补牢】计算机网络灵魂之问 第2期 常见状态码知道哪些? 304 403 405分别是什么
- 【亡羊补牢】计算机网络灵魂之问 第3期 http状态码 302 504分别代表什么意思
响应状态码,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/
学如逆水行舟,不进则退