HTTP WEB 的缓存行为
强缓存
定义:客户端直接从本地缓存中加载资源,而无需向服务器发起请求。
实现方式:HTTP 头部 Cache-Control(如 max-age
、immutable
)
- max-age=31536000:缓存 1 年
- immutable:资源不会改变,浏览器无需验证更新
浏览器检查缓存资源的有效期;如果资源在有效期内,直接使用缓存(状态码 200 (from disk cache) 或 200 (from memory cache));如果资源过期,则进入协商缓存。
协商缓存
定义:客户端通过验证机制与服务器确认资源是否更新。
实现方式:
- ETag 和 If-None-Match:通过资源指纹校验是否更新。
- Last-Modified 和 If-Modified-Since:通过资源的最后修改时间判断是否更新。
客户端发送请求,附带验证头(如 If-None-Match 或 If-Modified-Since)。服务器检查资源是否更新,如果未更新,返回状态码 304 Not Modified,客户端继续使用缓存;如果已更新,返回状态码 200 OK 和新的资源内容。