Mar 052012
 

Avec varnish, par défaut quand vous appelez la routine pass,

return(pass);

votre requête sera envoyée directement au backend sans vérifier le cache mais si la réponse est « cachable » http://blog.jeremm.fr/?p=190, Varnish la sauvegardera dans son cache.

Bien sûr cela ne sert souvent à rien car la prochaine requête passera encore par le routine pass, et l’objet dans le cache ne sera pas utilisée.
Mais avec une configuration plus complexe, l’objet en cache pourrait être utilisé.

Pour être sûr que les objets passant par la routine pass ne soit pas cachée, ajoutez :

sub vcl_pass {
        set req.http.X-marker = "pass" ;
}

et dans le vcl_fetch :

if (req.http.X-marker == "pass" ) {
        unset req.http.X-marker;
        set beresp.ttl = 0s ;
}