强缓存:浏览器直接用本地副本,根本不发请求。由 Cache-Control(max-age=3600 等,优先级更高)或 Expires 控制。命中时状态码 200,DevTools 显示 from disk/memory cache,速度最快。
强缓存过期后走协商缓存:发请求问服务器「我这份还能用吗」——If-Modified-Since/Last-Modified 或 If-None-Match/ETag(优先级更高),能用就返回 304 Not Modified(不含响应体,只传 headers,极省流量),不能用返回 200 与新资源。ETag 比 Last-Modified 精确(毫秒内修改/内容变了时间没变都判得出)。
<!-- 服务器响应头示例 --> # 强缓存 1 小时(优先级最高) HTTP/1.1 200 OK Cache-Control: max-age=3600 Date: Wed, 01 Nov 2026 08:00:00 GMT # 协商缓存:带指纹返回 HTTP/1.1 200 OK ETag: "abc123" Last-Modified: Wed, 01 Nov 2026 07:00:00 GMT Cache-Control: no-cache # ★ 每次都要问服务器(走协商) # 下次请求带上: If-None-Match: "abc123" If-Modified-Since: Wed, 01 Nov 2026 07:00:00 GMT # 没变化 → 304(无 body) HTTP/1.1 304 Not Modified ETag: "abc123"