Лак действует по-разному в разных браузерах, почему? - PullRequest
3 голосов
/ 28 февраля 2012

В Firefox Varnish находится в игре, но не в Google Chrome.Возможный?Почему?

Ответы [ 3 ]

3 голосов
/ 02 марта 2012

Еще одна возможная причина может заключаться в том, что у вас есть файл cookie сеанса в Chrome, который заставляет Varnish передавать запрос бэкэнду.

1 голос
/ 28 февраля 2012

Наиболее вероятной причиной является нормализация заголовка Accept-Encoding, и Firefox, и Chrome отправляют разные. Добавьте это к вашему sub vcl_recv ():

if (req.http.Accept-Encoding) {
    if (req.url ~ "\.(jpg|png|gif|gz|tgz|bz2|tbz|mp3|ogg)$") {
        # No point in compressing these
        remove req.http.Accept-Encoding;
    } elsif (req.http.Accept-Encoding ~ "gzip") {
        set req.http.Accept-Encoding = "gzip";
    } elsif (req.http.Accept-Encoding ~ "deflate") {
        set req.http.Accept-Encoding = "deflate";
    } else {
        # unkown algorithm
        remove req.http.Accept-Encoding;
    }
}

Это также задокументировано в руководстве Varnish для заголовка "Vary" .

0 голосов
/ 26 мая 2017
    if (req.http.Accept-Encoding) {
       if (req.http.Accept-Encoding ~ "gzip") {
           set req.http.Accept-Encoding = "gzip";
       } elsif (req.http.Accept-Encoding ~ "deflate") {
           set req.http.Accept-Encoding = "deflate";
       } else {
           # unknown language. Remove the accept-language header and
           # use the backend default.
           unset req.http.Accept-Encoding;
       }
    }
   //add below condition along with above code in vcl_recv subroutine.
   if(req.http.User-Agent) {
       unset req.http.User-Agent;
   }
...