Varnish: como adicionar uma exceção para páginas dinâmicas com cookies

2

Gostaria de saber qual é a maneira correta de evitar o armazenamento em cache de "algumas páginas" de um site usando o Varnish e armazenar todos os outros em cache.

Isso é o que eu tentei fazer com o vcl conf:

     sub vcl_fetch {
         #set beresp.ttl = 1d;
         if (!(req.url ~ "/page1withauth") ||
             !(req.url ~ "/page2withauth")) {
            unset beresp.http.set-cookie;
         }
         if (!beresp.cacheable) {
             return (pass);
         }
         if (beresp.http.Set-Cookie) {
             return (pass);
         }
         return (deliver);
}

Obrigado

    
por mnml 17.02.2011 / 17:19

1 resposta

5

Normalmente, isso seria feito em vcl_recv:

sub vcl_recv {
  if ( req.url !~ "^/page1withauth" && req.url !~ "^/page2withauth" )
  {
    unset req.http.Cookie;
    remove req.http.Cookie;
  }
}

Em seguida, a única vez em que você deve ter um parâmetro set-cookie voltando do servidor é quando você está tentando identificar exclusivamente a conexão. Se é porque eles apenas postaram ou similares, isso já vai escapar do cache. Se é porque você simplesmente quer identificá-los de forma única, então o problema é o código da sua aplicação quebrar intencionalmente o verniz; corrija seu aplicativo se puder, caso contrário, você poderá substituir vcl_fetch de forma semelhante ao que está fazendo aqui.

    
por 21.02.2011 / 20:07