浏览器缓存

今天不唠嗑了; 直奔主题哈 ; 算法

前言浏览器


浏览器缓存能够说是浏览器提升性能的一个简单高效的方式吧 ; 不只提升了网页加载的速度,提高用户的体验; 因为缓存文件能够重复的使用,还能够减小带宽,减小网络和服务器的压力; 缓存

对于一个数据请求能够简单为三个阶段:服务器

  1. 浏览器发起请求,
  2. 服务器处理并返回,
  3. 浏览器接受并响应;网络

    缓存主要是在前俩个阶段来处理! 性能

    对应的尼: 就是一个强缓存和一个协商缓存了;spa

那什么是强缓存 ,什么又是协商缓存尼 ?
强缓存:主要经过, cache-control和expires 来决定的。告诉浏览器遇到该类请求,直接走缓存。
协商缓存:经过: last-modified,etag ,来表示。当向服务器请求数据的时候,服务会拿时间和etag 来对比下。 若是发现文件没有改变,则返回304 告诉浏览器走本地缓存。 不然正常返回3d

cache-control 字段
在请求是cache-control 可选的字段有:
image.png资源

expires字段 ;
设置过时时间:如: 3dit

last-modified字段
服务端在返回资源时 ,会在该资源最后的更改时间经过last-modified返回给客户端。客户端在下次请求资源的时候会带上这个时间,这个时候服务端会检查这个时间跟服务端修改的时间是否一致,若是一致则返回 304. 若是不一致则返回200

etag字段光经过 last-modified 来判断仍是有缺陷的,好比最后的时间该了, 可是内容没有改 。这个时候咱们就能够经过使用etag 来判断服务器经过算法对内容进行计算, 取得一串值, 以后经过etag返回给客户端。下次客户端请求是一样带上etag 值, 给服务验证 。相同的话返回304, 不然返回200.