强制缓存
强制缓存:使用Expires,Cache-Control Expires:到期时间;如Expires: Wed, 02 Jan 2019 12:12:03 GMT Cache-control :max-age=864000 (10天)
nginx 中设置expires , 返回的响应中除了expires的头部信息之外,还有设置了cache-control :max-age 。 不过Expires 是HTTP 1.0的东西,现在默认浏览器均默认使用HTTP 1.1,所以它的作用基本忽略。真正判断是否过期的是max-age,因为他是相对时间。而expires是绝对时间,返回的到期时间是服务器端的时间,这样存在一个问题,如果浏览器所在机器的时间与服务器的时间相差很大,那么误差就很大。
对比缓存
对比缓存:使用Last-Modified / If-Modified-Since ; Etag / If-None-Match(优先级高于Last-Modified / If-Modified-Since)
注意:强缓存或覆盖对比缓存,就是说如果缓存时间未过期,客户端是不会向后端服务器发送请求的,只有缓存过期,才会发送请求,如果此时文件依旧为修改,那么任然会返回304让客户端从缓存中加载资源; Etag / If-None-Match(优先级高于Last-Modified / If-Modified-Since):过程和上面的类似,只是传输的信息为Etag和和If-None-Match;服务器会返回头部Etag标志,而客户端会用头部If-None-Match来向后端确认前后标志是否相同,相同的话后端返回304,不同返回200,新的Etag和资源;
参考
https://segmentfault.com/a/1190000010775131