1.强制缓存和协商缓存主要是针对静态资源进行缓存的。
2.强制缓存是当浏览器向服务器发请求时,资源未过期,服务器直接返还缓存资源,过期重新发请求。
3.协商缓存是浏览器向服务器发请求时先发一次get请求,问服务器缓存资源有更新吗,没有则命中缓存,有则重新发请求。
4.cache- control的参数有,no-cache,开启协商缓存,no-store是不开启缓存。public是否进行代理服务器缓存,用户信息等私人信息建议不开启,private是不开启代理服务器缓存。max-age缓存过期时间,s-maxage代理服务器缓存过期时间。
5.强制缓存可以有两种设置方式,expires和cache-control:max-age=5单位是秒,第一种依赖本地时间戳,第二种是第一种的替代方案,除非要向下兼容时用第一种。强制缓存可能更新不及时
6.协商缓存要先将cache- control设置为no-cache,开启协商缓存。然后也有两种设置方式,last-modified和etag,第一种弊端是内容没有发生改变,只是资源名称变了都会重新请求,第二种生成etag指纹,内容发生变化都会生成新的,当生成etag的资源过大时,更新比较频繁会造成开销,所以二者要根据资源的特性合理选择那种模式。
7.图片和css文件可以用强制缓存,图片不会常更新内容,css文件打包时文件名是hash拼接的,每次更新文件名都不一样,所以可以当作请求路径,每次更新也能保证缓存资源是最新的