一张图看明白一次资源请求过程中存在的浏览器缓存原理

强缓存: Expires/Cache-control 搭配 协商缓存: ETag/If-none-match(HTTP1.1) 或者 Last-modified/If-modified-since(HTTP1.0) 实现浏览器请求资源时的缓存过程:
一张图看明白一次资源请求过程中存在的浏览器缓存原理

协商缓存需要配合强缓存使用,如果不启用强缓存的话,协商缓存根本没有意义

大部分web服务器都默认开启协商缓存,而且是同时启用【Last-Modified,If-Modified-Since】和【ETag、If-None-Match】

但是下面的场景需要注意:

  • 分布式系统里多台机器间文件的Last-Modified必须保持一致,以免负载均衡到不同机器导致比对失败;
  • 分布式系统尽量关闭掉ETag(每台机器生成的ETag都会不一样);