一、浏览器缓存的类型,浏览器决定存储地址
1、service worker: 用户手动配置,自定义要缓存的文件;
2、memory cache: 内存,存储小文件;
3、disk cache: 磁盘存储,大文件;
4、push cache: http/2新添加
二、浏览器缓存策略: 强缓存与协商缓存
1、强缓存:响应头参数
Expires设置过期时间,在此之前都用缓存,依赖用户本地时间;
Cache-control: 配置 no-cache或者 max-age,可设置是否缓存以及过期时间,精确到秒优先级高于Expires;
2、协商缓存:两种配置方式
Last-Modified: 首次请求服务端响应头返回,表示文件的最后更改时间,客户端打开文件会导致该值更改;
If-Modified-Since: 后续请求,浏览器请求头里携带,服务端判断资源是否更改,再确定返回,计算到秒,精确性差一点;
E-Tag: 服务端依据文件内容生成的hash值,首次请求时随响应头返回;
If-None-Match: 浏览器在请求头携带,服务端比对后返回相对资源;
相对来说 E-Tag的配置要优于 Last-Modified;
浏览器缓存策略是先看强缓存配置,过期或无缓冲则取新内容,未过期取缓存; 无强缓存则看协商缓存配置,携带相关配置去服务端请求响应资源;
用户配置,频繁改变的资源可设置 cache-control: no-cache,不进行缓存,每次都取最新的资源;
不常改变的资源则可以用协商缓存的方式。