携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第12天,点击查看活动详情
缓存控制
什么是缓存控制标头
缓存控制是一个 HTTP 标头,用于在客户端请求和服务器响应中指定浏览器缓存策略。策略包括资源的缓存方式、缓存位置以及资源到期前的最长期限(即生存时间)。
缓存控制标头被分解为多个指令,其中最常见的指令如下所述:
来自 google.com 的 HTTP 响应标头示例
缓存控制:最大期限
最大期限请求指令定义资源的缓存副本过期所需的时间(以秒为单位)。过期后,浏览器必须通过向服务器发送另一个请求来刷新其资源版本。
例如,表示返回的资源在 120 秒内有效,在此之后,浏览器必须请求更新的版本。cache-control: max-age=120
缓存控制:无缓存
no-cache 指令意味着浏览器可以缓存响应,但必须首先向源服务器提交验证请求。
缓存控制:无存储
no-store 指令意味着不允许浏览器缓存响应,并且每次请求响应时都必须从服务器中提取响应。此设置通常用于敏感数据,例如个人银行详细信息。
缓存控制:公共
公共响应指令指示资源可以由任何缓存缓存。
缓存控制:专用
专用响应指令指示资源是特定于用户的 - 它仍然可以缓存,但只能在客户端设备上缓存。例如,标记为私有的网页响应可以由桌面浏览器缓存,但不能由内容交付网络 (CDN) 缓存。
其他 HTTP 缓存标头
除了缓存控制之外,值得注意的 HTTP 缓存标头还包括:
- 过期 – 此标头指定缓存资源过期的固定日期/时间。例如,缓存的资源将于 2017 年 5 月 13 日上午 7:00(格林威治标准时间)过期的信号。当存在包含最大期限指令的缓存控制标头时,将忽略 expires 标头。
Expires: Sat, 13 May 2017 07:00:00 GMT
- ETag – 一个响应标头,它根据标记(例如引号中的字符串)标识服务内容的版本,该标记在资源修改后会发生变化。如果在发出请求之前令牌未更改,则浏览器将继续使用其本地版本。
"675af34563dc-tr34"
- Vary – 一个标头,用于确定必须与缓存资源匹配的响应,才能将其视为有效。例如,标头指定用户代理和语言的每个组合都必须存在缓存版本。
Vary: Accept-Language, User-Agent
了解 Imperva CDN 如何帮助您提高网站性能。
申请演示了解更多信息
CDN 和缓存控制
缓存标头的多样性可能会使手动缓存管理变得不堪重负。CDN 允许通过用户友好的仪表板进行精细的缓存策略管理,无需手动调整单个标头。
除了简化缓存管理之外,CDN 还使用代理增强了浏览器缓存过程。代理缓存使内容更接近网站访问者,从而加速本地存储资源的交付。这对于浏览器尚未缓存网站内容的首次访问者尤其有用。
最后,更高级的 CDN 使用高级自动化技术(包括机器学习)来缓存动态生成的内容和资源。这可以优化您的缓存策略,并进一步加快内容交付速度。