簡體   English   中英

同一站點的不同Varnish緩存存儲

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM