一. 缓存无处不在

  1. cpu是有缓存的。可以减少和内存的交互,因为需要经过主板。
  2. 数据库也是有缓存的。因为数据库是以文件形式存储在硬盘上的,读取硬盘速度远远小于读取内存的速度。
  3. 服务器上也是有缓存的。比如membcache,redis,减少对数据库以及静态资源的读取。
  4. 浏览器也是有缓存的(304 Not Midified)。请求过一次的资源放在本地,加快请求速度。

二. 缓存的优点

  1. 减少延迟,加快速度
  2. 减少带宽消耗

三. 浏览器缓存的关键参数

  • Expires/Cache-control : 缓存时间;当这个时间没过的时候,不去服务器检查,即不发起http请求,直接从缓存中取;都存在的时候,以Cache-control为准。响应头中。
  • ETag : 当前资源在服务器的唯一标识。响应头中。
  • Last-Modified : 文件修改时间。响应头中。
  • If-Modified-Since : 下一次请求的请求头中,值为上次请求资源是的Etag值
  • If-None_Match : 下一次请求的请求头中。当资源过期时(即Expires/Cache-control判断),向服务器请求时If-None_Match会带上ETag的值,然后由服务器决定返回304或200

四. 关于304跳转

服务器告诉浏览器资源没有改变,由浏览器从缓存中读取。


304的跳转经过了服务器,200(from cache)没有经过服务器0