搜索全站
multilingual 2 分钟阅读

多语言与 CDN 缓存适配:按语言/URL 区分缓存

多语言站 CDN 边缘缓存要按语言区分,否则把中文页缓存推给英文用户。讲清用 URL 区分(子目录/子域名最稳)或 Vary/Cookie 区分边缘缓存的做法。

U
UFO_PF 2023-04-21 · 阅读 2 分钟
多语 MULTILINGUAL
阅读提示
本文约 625 字,预计阅读 2 分钟。文中命令与配置均经过实测,可直接参考执行。

引言:英文用户命中中文 CDN 缓存

CDN 边缘按 URL 缓存,若多语言用”同 URL + Cookie”,边缘不知语言,会把首个访问者语言缓存推给所有人。必须让边缘按语言区分。

原理分析:两种区分法

  • URL 区分(推荐):/en/、en. 各异 URL,CDN 天然分缓存,最稳。
  • Cookie/Vary 区分:同 URL 用 Vary: Cookie 或边缘规则按语言 Cookie 分,复杂且易错。
    优先 URL 区分,省去边缘配置麻烦。

保姆级实操

URL 模式无需特殊;Cookie 模式 Cloudflare 用边缘规则:

# 若用 Cookie 模式,源站输出 Vary: Cookie,CDN 据此分
add_header Vary "Cookie";

Cloudflare 用 Worker/规则按 ?lang= 或 Cookie 设缓存键。

常见坑

  1. 同 URL 无 Vary,串语言。
  2. 边缘规则写错,中文推英文。
  3. 案例:某站子目录模式多语言,CDN 天然分缓存,无串语言问题;另一 Cookie 模式站没 Vary,乱套后改子目录。
  4. 缓存键不含语言,回源错。
  5. 清 CDN 不按语言,残留。

总结

判断标准:优先 URL 区分;Cookie 模式须 Vary/边缘规则按语言。行动清单:选 URL 模式 → 或加 Vary → 边缘规则 → 清缓存测。详见CDN 对 Google SEO 的影响。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。