强缓存

  • expires 规定什么时候过期
  • cache-control
    1.max-age 缓存最大过期时间
    2.no-cache 可以在客户端储存资源,每次都必须去服务端校验新鲜度,来决定从服务器获取新的资源(200)还是使用客户端的缓存(304)
    3.no-store 永远都不在客户端储存资源,每次都是从服务器获取新资源
    cache-control优先级大于expires

协商缓存(服务器端的缓存策略)

服务端判断客户端资源是否和服务端一致,一致返回304,否则返回200和新资源

Response Headers中,主要有两种

  • Last-Modified: 资源最后修改的时间
  • Etag: 资源的唯一标识(一个字符串,例如hash)

优先使用Etag,因为Last-Modified只能精确到秒级。另外如果资源重复生成,而内容不变,则Etag更精确。

正常流程 ,判断强制缓存有效后直接用缓存,如果失效再判断协商缓存。

三种操作对缓存的影响

  • 正常操作:地址栏输入url,跳转链接。 缓存都有效
  • 手动刷新(F5等): 强制缓存失效,协商缓存有效
  • 强制刷新: 都失效