Http 缓存机制

1.expires 缓存

expires: Thu, 16 May 2019 03:05:59 GMT
  • 在 http 头中设置一个过期时间,在这个过期时间之前,浏览器的请求都不会发出,而是自动从缓存中读取文件,除非缓存被清空,或者强制刷新。缺陷在于,服务器时间和用户端时间可能存在不一致,所以 HTTP/1.1 加入了 cache-control 头来改进这个问题。
  1. cache-contorl 缓存
cache-control: max-age=31536000
  • 设置过期的时间长度(秒),在这个时间范围内,浏览器请求都会直接读缓存。
  • 当 expires 和 cache-control 都存在时,cache-control 的优先级更高。
  1. last-modified / if-modified-since
响应头
  last-modified: Wed, 16 May 2018 02:57:16 GMT
请求头
  if-modified-since: Wed, 16 May 2018 05:55:38 GMT
  • 服务器返回资源信息时,会在响应头中添加一字段( last-modified),并在下次请求会把值加入到请求头 if-modified-since 中,服务器会进行对比此字段值,如果没有变化则返回304,直接获取缓存中的数据。
  1. etag / if-none-match
响应头
  etag:"D5FC8B85A045FF720547BC36FC872550"
请求头
  if-none-match: "D5FC8B85A045FF720547BC36FC872550"
  • 原理类似,服务器端返回资源时,如果头部带上了 etag,那么资源下次请求时就会把值加入到请求头 if-none-match 中,服务器可以对比这个值,确定资源是否发生变化,如果没有发生变化,则返回 304。
上面四种缓存的优先级:cache-control > expires > etag > last-modified

你可能感兴趣的:(Http 缓存机制)