名词解释

expires: Thu, 24 Nov 2022 07:59:16 GMT
响应头,代表该资源的过期时间

last-modified: Mon, 08 Nov 2021 11:58:00 GMT
响应头,资源最近修改时间,由服务器告诉浏览器。

cache-control: public, max-age=31536000
请求/响应头,缓存控制字段,精确控制缓存策略

etag: W/“61974470-10c4”
响应头,资源标识,由服务器告诉浏览器。

缓存过程

  1. 第一次请求数据时,无缓存,直接向服务器发出数据请求,服务器返回:最近数据 ,Expires,Cache-Control: max-age = 10,上次文件修改时间Last-Modified,以及文件的Etag。
  2. 第二次请求数据时候,有缓存,先优先查看是否超过Cache-Control,如果没有超过,直接用缓存数据,如果超过了,携带If-Modified-Since,If-None-Cache(Tag值),直接向服务器发送请求。如果没有Cache-Control才会检查Expires。
  3. 服务器收到浏览器请求,优先比较If-None-Cache和服务器端文件的Etag值是否一致,如果不一致则返回新数据,如果一致则通知浏览器继续使用本地缓存(状态码:304)。如果没有If-None-Cache,才会比较If-Modified-Since.

关于刷新

  1. 当ctrl+f5强制刷新网页时,直接从服务器加载,跳过强缓存和协商缓存。
  1. 当f5刷新网页时(等同于刷新按钮),跳过强缓存,但是会检查协商缓存。

  2. 浏览器地址栏中写入URL,回车 浏览器发现缓存中有这个文件了,不用继续请求了,直接去缓存拿。(最快)