为什么网站不使用Vary:Accept-Language?

时间:2016-04-30 10:40:54

标签: http http-headers multilingual

据我所知,在使用多语言网站时,您应该设置Vary: Accept-language响应标头。在我的情况下,用户被重定向到特定于语言的页面,例如, http://www.example.com/nl/

但我找不到任何使用此Vary标头的网站。这是为什么?即使是Apple,Microsoft,Samsung,Facebook的多语言网站也不使用此标题。

2 个答案:

答案 0 :(得分:3)

最简单的答案是网站只支持可能语言的一小部分,这意味着网络缓存(即CDN)必须根据来自的语言的Accept-Language标头缓存许多不同版本的页面。浏览器,实际上只有很少的不同版本。这是一个问题,因为它会导致缓存碎片,从而降低缓存服务器上的缓存命中率并消耗更多资源(CPU / RAM /磁盘)。

Google建议每种语言使用不同的网址 https://support.google.com/webmasters/answer/182192

此外,Akamai过去不支持基于Vary标头的缓存,除了Vary:Accept-Encoding,但我不相信他们仍然有这个限制。 http://my.globaldots.com/knowledgebase.php?action=displayarticle&id=32

答案 1 :(得分:-2)

您可以通过类似的方式对Vary:Accept-Language进行标准化:

# Normalize Accept-Language
declare local var.lang STRING;
if (req.http.Accept-Language) {
  set var.lang = req.http.Accept-Language;
}
if (var.lang ~ "^da") {
  set req.http.Accept-Language = "da";
} elsif (var.lang ~ "^sv") {
  set req.http.Accept-Language = "sv";
} else {
  # unknown language
  remove req.http.Accept-Language;
}