浏览器缓存机制(强制缓存,协商缓存)

浏览器缓存机制(强制缓存,协商缓存)

    • 1. 强制缓存
      • (1)Expires
      • (2)Cache-Control
    • 2. 协商缓存
      • (1)Last-Modified / If-Modified-Since
      • (2)Etag / If-None-Match

优先级:强制缓存 > 协商缓存

1. 强制缓存

在有效时间内,不会向服务器发送请求,直接找缓存

控制强制缓存的字段分别是ExpiresCache-Control
优先级:Cache-Control > Expires

(1)Expires

  • Expires的时间值是绝对值,对比客户端的时间与Expires的时间

> Response Headers
在这里插入图片描述

(2)Cache-Control

  • Cache-Control的时间值是相对值max-age=600代表缓存内容将在600秒后失效

> Response Headers
在这里插入图片描述

2. 协商缓存

强制缓存失效后,浏览器携带缓存标识向服务器发起请求,由服务器根据缓存标识决定是否使用缓存

控制协商缓存的字段分别有:Last-Modified / If-Modified-SinceEtag / If-None-Match
优先级:Etag / If-None-Match > Last-Modified / If-Modified-Since

(1)Last-Modified / If-Modified-Since

  • Last-Modified是由服务器发送给客户端HTTP响应头标签,时间值是当前资源文件的修改时间

> Response Headers
在这里插入图片描述

  • If-Modified-Since是由客户端发送给服务器HTTP请求头标签,客户端再次发起该请求时,会携带上次请求返回的Last-Modified的时间值,对比If-Modified-Since的时间和该资源在服务器端最后被修改的时间,决定是否更新资源

> Request Headers
在这里插入图片描述

(2)Etag / If-None-Match

  • Etag是由服务器发送给客户端HTTP响应头标签,是服务器端生成的资源文件的一个唯一标识

> Response Headers
在这里插入图片描述

  • If-None-Match是由客户端发送给服务器HTTP请求头标签,客户端再次发起该请求时,会携带上次请求返回的Etag值,对比服务器端的Etag值和If-None-Match的值,决定是否更新资源

> Request Headers
在这里插入图片描述

你可能感兴趣的:(前端,缓存,http)