HTTP知识学习(Header)

HTTP知识学习 Header

HTTP 缓存分为以下两种,两者都是通过 HTTP 响应头控制缓存。

  • 强制缓存
  • 协商缓存

强制缓存

再次请求时无需再向服务器发送请求

1
2
3
4
          client         server
GET /a.ab389z.js ------->
<------- 200 OK
(再也不会发请求)

与之相关的 Response Headers

  • Expires

使用绝对时间,且有固定的格式 https://tools.ietf.org/html/rfc822#section-5.1

  • Cache-Control

具有强大的缓存控制能力
其常用字段:

  1. no-cache,每次请求需要校验服务器资源的新鲜度
  2. max-age=31536000,浏览器在一年内都不需要向服务器请求资源

协商缓存

再次请求时,需要向服务器校验新鲜度,如果资源是新鲜的,返回304,从浏览器获取资源

1
2
3
4
5
           client         server
GET /a.js ----------->
<----------- 200 OK
GET /a.js ----------->
<----------- 304 Not Modified

与之相关的 Request/Response Headers

  • Last-Modified/If-Modified-Since
    • 匹配 Response Header 的 Last-Modified 与 Request Header 的 If-Modified-Since 是否一致。
  • Etag/If-None-Match
    • 匹配 Response Header 的 Etag 与 Request Header 的 If-None-Match 是否一致。

HTTP知识学习(Header)
http://seddon.lol/2022/10/15/HTTP知识学习-Header/
作者
Seddon
发布于
2022年10月15日
许可协议