HTTP缓存是提升网页性能的关键技术,通过减少重复请求和带宽消耗,显著优化用户体验。以下是核心知识点:
一、缓存作用
- 加速资源加载:本地存储已获取资源,避免重复传输
- 降低服务器压力:减少后端处理请求的频率
- 节省网络流量:尤其对移动端用户意义重大
- 实现离线访问:在无网络时仍可查看缓存内容
二、关键HTTP头字段
头字段 | 作用 | 示例 |
---|---|---|
Cache-Control |
控制缓存行为 | max-age=3600, public |
ETag |
资源唯一标识 | "abc123" |
Last-Modified |
最后修改时间 | Wed, 21 Oct 2020 07:28:00 GMT |
Expires |
缓存过期时间 | Wed, 29 Oct 2020 16:41:00 GMT |
Vary |
决定缓存是否匹配 | User-Agent |
三、缓存策略类型
强缓存(无需验证)
- 通过
Cache-Control
或Expires
直接使用缓存 - ⏱️ 速度快但可能造成数据不一致
- 通过
协商缓存(需要服务器验证)
- 使用
ETag
/If-None-Match
或Last-Modified
/If-Modified-Since
- 🤝 保证数据新鲜度与缓存效率的平衡
- 使用
私有缓存 vs 公共缓存
private
:仅用户终端缓存(如图片)public
:可被代理服务器缓存(如静态资源)
四、缓存流程图
五、缓存验证与更新
- 304 Not Modified:资源未改变,直接使用缓存
- 200 OK:资源已更新,返回新内容
- 缓存失效处理:通过
Cache-Control: no-cache
触发验证
六、扩展阅读
想要深入了解实际应用中的缓存实现细节,可以参考:
/zh/articles/http-cache-implementation
了解如何通过代码配置缓存策略,或查看相关工具的使用指南。