英文URL偶尔返回中文,先保存那次响应的原始HTML和缓存头,再检查语言选择条件有没有进入缓存区分规则。若源站正常、共享缓存命中时串页,优先查CDN或反向代理如何构造缓存键;若源站也错,先修应用的语言选择。提高缓存命中率不能以复用错误语言的HTML为代价。
看到中文界面,不一定就是缓存串页
先区分服务器返回的HTML与浏览器后续渲染。打开Network中主文档的Response,检查标题、正文片段、html语言和canonical等字段。若HTML为英文,脚本运行后才变中文,应继续检查客户端状态、语言插件或本地存储,不要直接清CDN了事。
若主文档本身已是中文,再记录最终URL、重定向链、请求中的语言头和必要的测试Cookie,以及响应中的Cache-Control、Vary、Age和厂商缓存状态。分享材料时删除身份Cookie、会话标识等敏感值。Age能提供存储年龄线索,但不能单靠它定位所有缓存层;某层没有这个头,也不证明完全没有缓存。
用两个全新浏览器上下文分别访问两种语言,避免已有语言偏好干扰。对于可以公开匿名访问的页面,还可以用不带身份凭据的只读请求比较,但要确认请求方式与真实文档导航有何差异。排查不是批量扫站,少量明确样本更容易保留完整证据。

原创结构示意:不同语言URL应保持响应隔离;同URL依赖语言协商时,还须核对实际变体规则。此图不是任何CDN的配置界面。
语言已经在URL里,还会怎样混用
假设站点有/en/product/与/zh/product/,但边缘规则把语言前缀去掉后再生成缓存键,两条地址就可能复用同一份对象。另一种情况是不同语言使用不同主机名,配置却忽略Host。源站应用缓存也可能只按产品ID保存完整页面,没有包含语言条件。
检查每一层实际使用的键,而不是只看业务上“我们有两个URL”。CDN、反向代理、应用整页缓存和Service Worker都可能影响最终文档;修完其中一层,另一层仍有旧对象,就会表现为偶发。若内容混用仅发生在某类模板,也要看产品页与文章页是否用了不同缓存组件。
对于明确分语言URL的公开页面,一个容易理解的设计是由URL稳定决定主体语言,语言偏好用于提供选择或导航,而不是在同一英文URL下悄悄改正文。若业务确需个性化显示,应把规则和缓存隔离写清。本文不要求读者在生产直接修改现有语言跳转逻辑。
同URL语言协商,Vary才有具体作用
MDN的HTTP缓存说明给出按Accept-Language协商内容的例子:响应可用Vary: Accept-Language让遵循该规则的缓存按请求头区分变体,而不是只按URL复用。前提是服务器确实根据这个请求头选择语言。
Vary: Accept-Language
这不是所有多语言站的万能修复。如果语言由Cookie、路径或查询参数决定,仅添加这个Vary字段未必覆盖实际差异。托管CDN还可能对Vary有自己的支持范围或缓存规则,必须核对产品文档及响应结果,不能只确认源站出现了这一行头就宣布完成。
语言头可包含多个语言及权重组合,直接为每个原始值建立变体,可能降低复用率。如果团队采用归一化后的语言键,必须保证归一化逻辑与源站选语言完全一致。不认识的语言、缺失请求头和默认语言都要有确定结果,不能让“第一个请求是什么语言”决定后续访客看到什么。
带Cookie不等于自动不能共享
MDN也提醒,Cookie本身不会使响应自动私有。若HTML含登录身份、客户专属报价或其他个人化数据,错误的共享缓存除了串语言,还可能泄露信息。应按应用与缓存产品规则明确使用private、no-store或绕过共享缓存等策略;这些指令各有语义,不能随意互换。
不要把所有Cookie原值都拼进公开缓存键作为仓促修补。这样可能让缓存几乎不能复用,并增加敏感标识扩散风险。先区分公开语言变体与用户私有内容:前者可以设计有限且可验证的区分条件,后者要优先保证不会跨用户复用。在没有架构和权限资料时,应把具体配置交给维护人员核对。
光算谷歌SEO服务提供网站技术优化方向,多语言缓存问题涉及CDN、应用与模板时,需要按项目明确诊断及开发配合范围。本文给出只读判断和隔离复测方法,没有更改生产缓存,也没有承诺某项头部配置适用于所有服务商。
复测顺序要能抓到先写入的语言
- 在授权的预发布或隔离环境清理目标测试对象,不清空不相关业务缓存。
- 先访问英文,再访问中文,保存两次主文档、缓存头和实际正文语言。
- 反过来先中文后英文,重复同样记录,检查结果是否取决于首个写入请求。
- 分别覆盖无偏好、明确偏好、回访及刷新;若不同节点有差异,再核对授权范围内的节点结果。
- 在过期、重新验证和内容发布之后再测,确认旧对象不把错误语言带回来。
页面标题与首段只是快速对照点。正式检查还要看导航、产品参数、结构化数据和规范链接是否属于同一语言版本。不能正文是英文就忽略头部仍指向中文页面,也不能只凭响应体哈希不同认定正确,不同页面可能只差随机标识。
修复后分别验“语言对不对”和“性能是否改善”。若测试很快但拿到错误HTML,这次性能结果没有业务意义。如何避免把局部实验混成整个站点结论,可继续阅读Lighthouse与CrUX报告核对方法。