Vary: Accept-Language 实验台

Case 12 — 同一 URL 多语言内容与 CDN cache key

场景说明

同一 URL /api/vary/language 根据 Accept-Language 返回不同 JSON。正确配置应加 Vary: Accept-Language,CDN 按语言分 cache key。

同一 URL,语言由 X-Demo-Accept-Language 模拟。有 Vary 时响应含 Vary: Accept-Language, X-Demo-Accept-Language(后者让浏览器能在 Network 里按语言分 disk cache)。请关闭 Disable cache。


操作

HIT 时 Network Size 应为 (disk cache);无 Vary 换语言也 HIT · 有 Vary 换语言 MISS

Network 面板怎么看

规范依据(RFC)

同一 URL 因 Accept-Language 返回不同内容时,应用 Vary: Accept-Language 拆分 cache key。

文档与本 Demo 相关章节
RFC 9111 HTTP Caching — Cache-Control、fresh/stale、存储条件 §2 · §3 · §4.1 · §5
RFC 9110 HTTP Semantics — Vary 定义;扩大 cache key §12.5.5
Fetch 浏览器如何实现 HTTP 缓存(Chrome 等) network-or-cache
RFC 9111 §2:A cache might store multiple responses for a request target … Caches differentiate these responses … using information in the Vary response header field.
RFC 9111 §4.1:… MUST NOT use that stored response … unless all … request header fields nominated by Vary … match those fields in the original request.
RFC 9110 §12.5.5:Vary expands the cache key required to match a new request to the stored cache entry.

无 Vary → 仅 URL 作 key(RFC 9111 §2);有 Vary → 同 URL 按语言分条目(§4.1)。