JavaScript is required
Kotae
Touko
20 days ago|views:100

强缓存与协商缓存

强缓存(Strong Cache)

浏览器直接从本地读取缓存资源,不与服务器通信。

控制方式

Expires(HTTP/1.0)

Expires: Wed, 30 Oct 2025 12:00:00 GMT
  • 表示资源在这个时间点之前有效;

  • 问题:受客户端时间影响。

Cache-Control(HTTP/1.1)

Cache-Control: max-age=31536000, public
  • 表示资源在未来 31536000 秒内(约 1 年)有效;

  • 常见取值:

    • public:所有用户都可缓存(默认)

    • private:仅用户浏览器可缓存

    • no-cache:不直接使用强缓存,转协商缓存

    • no-store:禁止缓存(敏感信息)

协商缓存(Negotiated Cache)

当强缓存过期或被禁用时,浏览器会向服务器发送请求:

控制方式

Last-Modified / If-Modified-Since

  • 服务器返回:

    Last-Modified: Tue, 28 Oct 2025 12:00:00 GMT
  • 浏览器下次请求时带上:

     
    If-Modified-Since: Tue, 28 Oct 2025 12:00:00 GMT
  • 服务器比较后:

    • 没变:返回 304 Not Modified

    • 变了:返回新的资源和状态码 200 OK

ETag / If-None-Match

  • ETag 是资源的唯一标识(内容哈希):

     
    ETag: "abc123"
  • 浏览器下次请求时带上:

     
    If-None-Match: "abc123"
  • 如果匹配,则返回 304;否则返回新内容。

tags:

http
0
comments:
It's deserted here, it looks like no one's been here