据我所知,在使用多语言网站时,您应该设置Vary: Accept-language
响应标头。在我的情况下,用户被重定向到特定于语言的页面,例如, http://www.example.com/nl/
但我找不到任何使用此Vary
标头的网站。这是为什么?即使是Apple,Microsoft,Samsung,Facebook的多语言网站也不使用此标题。
答案 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;
}