前端面试题(四)

145 阅读2分钟

「这是我参与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,告诉浏览器,可以访问本地缓存资源,并重新计时。