Vercel News

Vercel CDN no longer caches responses with Vary: Cookie

8.5内容质量

TL;DR · AI 摘要

Vercel CDN 现在不再缓存包含 Vary: Cookie 的响应,可能导致缓存未命中并影响性能。

核心要点

  • 检查 x-vercel-cache 头和 Runtime Logs 以识别缓存未命中的原因。
  • 若响应不依赖 Cookie,应移除 Vary: Cookie 以启用缓存。
  • 依赖 Cookie 的响应需使用 Cache-Control: private 防止缓存个性化内容。

结构提纲

按章节快速跳转。

  1. Vercel CDN 停止缓存包含 Vary: Cookie 的响应。

  2. Vary 头告知缓存哪些请求头可能改变响应,Cookie 常导致大量未复用的缓存条目。

  3. 缓存未命中率可能上升,需通过 x-vercel-cache 头和日志排查问题。

  4. 移除不必要的 Vary: Cookie 或使用 Cache-Control: private 控制缓存行为。

  5. 其他支持的 Vary 头缓存策略保持不变。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • Vercel CDN 缓存策略变更
    • 变更说明
      • 停止缓存 Vary: Cookie 响应
    • 技术原理
      • Vary 头作用机制
      • Cookie 导致缓存碎片化
    • 解决方案
      • 移除 Vary: Cookie
      • 使用 Cache-Control: private

金句 / Highlights

值得收藏与分享的关键句。

#Vercel#CDN#HTTP缓存#Vary头#性能优化
打开原文

Vercel CDN 不再缓存包含 Vary: Cookie 的响应 - Vercel

当 Vary 包含 Cookie 时,Vercel CDN 将不再缓存源站响应。

Vary 告诉缓存哪些请求头可能会影响响应内容。由于 Cookie 通常包含访客特定的值,按 Cookie 分片会导致生成大量很少被复用的缓存条目。响应仍会正常返回,但不会存储以供后续请求使用。

您可以通过检查 x-vercel-cache 头信息和运行时日志来识别这些响应。该头信息会被设置为 MISS,日志中会显示 vary_key_denied:cookie 作为缓存原因。

如果某条路由的运行时日志显示 vary_key_denied:cookie,但您期望该路由能够被缓存,请检查源站返回的 Vary 头:

  • 如果响应内容与 Cookie 无关,请从 Vary 中移除 Cookie。满足其他缓存条件时,Vercel CDN 将可以缓存该响应。
  • 如果响应内容依赖 Cookie,请保留 Cookie 在 Vary 中,并使用 Cache-Control: private 防止个性化响应被存储到共享 CDN 缓存中。

其他支持的 Vary 头的缓存行为保持不变。

了解更多关于高基数头和 vary_key_denied 缓存原因的信息。