1、强缓存
1)Expires [http1.0产物,修改本地时间也会触发更新]
2)Cache-Control [http1.1产物,优先级大于1),请求返回是status:200-size:disk/memory cache]
2、协商缓存
1)Last-Modified和If-Modified-Since
2)ETag和If-None-Match [优先级大于1)]
3、缓存顺序
强缓存>协商缓存
强制缓存(Expires和Cache-Control)生效则直接使用缓存,若不生效则进行协商缓存(Last-Modified / If-Modified-Since和Etag / If-None-Match),
协商缓存由服务器决定是否使用缓存,若协商缓存失效,那么代表该请求的缓存失效,返回200,重新返回资源和缓存标识,再存入浏览器缓存中;生效则返回304,继续使用缓存
4、应用
1)频繁变动的资源
Cache-Control: no-cache 配合 ETag 或者 Last-Modified 来验证资源是否有效
2)不常变化的资源
Cache-Control: max-age=31536000 [需要配合版本号或者标识使用如Swiper/3.4.2/js/swiper.min.js、jquery-1.8.3.min.js?1540439945]