HTTP缓存学习笔记

143 阅读1分钟

本文仅为个人学习笔记

HTTP缓存分为强缓存与协商缓存,浏览器先判定是否使用强缓存,若不使用强缓存,则交给服务器判断是否使用协商缓存。

强缓存 HTTP状态码:200

强缓存只有三个字段,都处于响应头,分别为 :

  • Pragma
  • cache-control
  • expires 当三个字段都存在时,优先级: Pragma>cache-control> expires

协商缓存 HTTP状态码:304

协商缓存只会在不使用强缓存时,并且符合相应条件时,才会出现

协商缓存有两对字段,分别为:

  • ETag/If-None-Match:ETag为服务器返回的资源标识符,位于响应头(Response Header)。当浏览器第二次请求相同资源时,若上一次请求有返回ETag,则将值放入请求头(Request Header)的If-None-Match,让服务器进行验证

  • Last-Modified/If-Modified-Since : Last-Modified位于响应头,If-Modified-Since位于请求头

If-Modified-Since 、If-None-Match同时存在时 优先级: If-None-Match (ETag) > If-Modified-Since (Last-Modified)

HTTP缓存.png

参考文章: 图解 HTTP 缓存
一文读懂http缓存

MDN-HTTP