「这是我参与2022首次更文挑战的第14天,活动详情查看:2022首次更文挑战」。
缓存
1.什么是缓存?
将请求到的数据,放在就近的仓库,下次请求就不用向服务器请求数据。直接从缓存中取。
2.缓存的优势是什么?
(1)减少向服务器发请求的次数
(2)减轻了服务器的压力
(3)加快网页的响应速度
(4)用户体验感好
2.web缓存种类有哪些?
(1)数据库缓存
(2)CDN缓存
(3)代理服务器缓存
(4)浏览器缓存
3.浏览器缓存是什么?
将请求过来的资源,拷贝一份放在浏览器中,下次再需要的时候可以直接从浏览器中取。
4..浏览器缓存的强缓存和协商缓存
强缓存:请求到的数据,在未过期之前,从缓存中取。返回200
协商缓存:请求的数据过期,向服务器发请求重新获取,服务器比对成功,允许访问缓存资源,返回304
5.浏览器缓存的字段有哪些?分别有什么作用?
Expires和Cache Control都是缓存策略,可以定义谁缓存,缓存条件,缓存时间
(1)Expires:缓存过期时间,时间是服务器时间
(2)Cache Control:缓存过期时间,时间是相对时间。
优先级比Expires高。同时出现,Expires会被忽略
(3)pragma:
(4)Etags:验证令牌。验证缓存中的响应,进行资源更新的检查。没有更改,不传输数据。
6.Cache Control的指令有哪些?分别有什么作用?
(1)no-cache 对响应的数据做缓存。
(2)no-astore:禁止一切缓存。
(3)public:可以被任何缓存区缓存
(4)private:不能被代理服务器缓存
(5)max-age:有效时长。
7.应用场景题:
1.如果浏览器上一次发请求得到的数据超时了(Cache-Control:max-age = 120),浏览器又发了次请求获取这个数据,这个时候,数据是从服务器中获取的还是缓存中获取的?为什么?
会从缓存中获取。因为有ETag,响应时效已过期,浏览器会再次发请求,服务器会比对他的ETag,如果ETag相同,服务器会返回304,告诉浏览器,可以访问本地缓存资源,并重新计时。