据我所知,当你在一个多语言网站上工作时,你应该总是设置Vary: Accept-language响应头。在我的例子中,用户被重定向到特定于语言的页面,例如http://www.example.com/nl/。
但是我找不到任何使用这个Vary头的网站。为什么会这样呢?即使是苹果,微软,三星,Facebook的多语言网站也不使用这个标题。
发布于 2016-05-20 04:26:01
最简单的答案是,网站只支持一小部分可能的语言,这意味着web缓存(即,CDN)将不得不基于来自浏览器的Accept-Language头缓存页面的许多不同版本,而实际上只有很少的不同版本。这是一个问题,因为它会导致缓存碎片,从而降低缓存服务器上的缓存命中率,并消耗更多的资源(CPU/RAM/磁盘)。
此外,谷歌还建议使用不同的https://support.google.com/webmasters/answer/182192语言的url
此外,Akamai过去不支持基于Vary头的缓存,除了Vary: Accept-Encoding,但是我不相信他们仍然有这个限制。http://my.globaldots.com/knowledgebase.php?action=displayarticle&id=32
发布于 2018-07-18 22:22:32
您可以以类似的方式规范化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;
}https://stackoverflow.com/questions/36953844
复制相似问题