[英]Different Varnish cache stores for same site
我有一個使用Joomfish進行翻譯的多語言joomla網站。 由於Joomfish使用Cookie來更改語言,而不是使用其他網址,因此在使其正常工作方面遇到了主要問題。 但是,我找到了一種方法來解決此問題,方法是讓清漆檢查cookie值,如果英語提供緩存,則將其他任何內容傳遞給服務器。
很好,但是我希望能夠緩存其他版本。 有沒有一種方法可以為不同的語言提供不同的緩存。 因此是德語,法語等的緩存版本。
我嘗試使用不同的nginx配置文件並設置不同的清漆后端,但這似乎沒有用。
為此,我做到了:
/* default is english */
backend default {
.host = "127.0.0.1";
.port = "8080";
}
/* french backend */
backend french {
.host = "127.0.0.1";
.port = "8081";
}
然后在我的sub recv
函數中:
if(req.http.cookie ~ "jfcookie\[lang\]=fr"){
set req.backend = french;
}
不過,這似乎服務於相同的緩存后端。 因此,如果您使用法語,則會將您轉至英語。
我相信您可以通過發送variable標頭來簡單地處理此問題。您可以讓您的應用設置標頭(例如X-language
並發送標頭Vary: X-language
這樣,varnish可以理解共有2種不同的語言並分別緩存。
我現在正在工作。 對於處於相同情況的任何人,請查看哈希。 我在下面詳細介紹了我的解決方案。
sub vcl_recv {
if(req.http.cookie ~ "jfcookie\[lang\]=fr"){
set req.http.X-Cookie-Language = "fr";
}
}
sub vcl_hash {
hash_data(req.http.X-Cookie-Language);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.