2021-3-12决定裸辞
总结下2021的前端面试。本篇浏览器相关知识点
常用浏览器
浏览器缓存
回答:浏览器http缓存分为强缓存、协商缓存,强缓存通过expires(绝对时间)和cache-control(相对时间)控制,协商缓存通过last-modify (精度到秒)和Etag控制。
强缓存
浏览器先根据这个资源的http请求头信息(cache-control里的max-age(相对时间,单位秒))来判断是否命中强缓存。如果命中则直接加载在缓存中的资源。expires也是设置缓时间但优先级低于cache-control,为绝对时间。
协商缓存–返回状态码304
如果未命中强缓存,则浏览器会将加载资源请求发送服务器,服务器根据浏览器本地缓存(If-Modified-Since中的值,即响应头的Last-Modified)是否失效。若可以使用,则服务器不返回资源信息。浏览器继续从缓存加载资源。
另一种方法:Etag(entity tag)/If-None-Match
Etag保证每一个资源是唯一的,资源变化都会导致Etag变化,所以服务器可以根据浏览器上发送的If-None-Match值来判断是否命中缓存。
未命中缓存,重新获取资源
如未命中协商缓存,则服务器将完整资源返回给浏览器,浏览器重新加载资源并更新缓存
缓存位置
- 内存缓存 memory-cache
- 磁盘缓存 disk-cache
- 离线缓存 service-cache
- 推送缓存 push-cache