Sep 162014
 

Par défaut, si vous utilisez la configuration en malloc sans option, varnish crée un espace de stockage nommé s0 en ram.
Mais vous pouvez utiliser plusieurs stockages en ram ou sur disque pour garantir des performances en fonction de votre besoin.
Par exemple, pour qu’un site ne remplisse par le cache et impacte sur un autre :
– Dans le fichier /etc/default/varnish

DAEMON_OPTS="
...
-s default=malloc,64m \
-s foo=malloc,128M \
-s bar=malloc,128M \
..."

– Dans vcl_backend_response (4.0) :

if (bereq.http.host ~ "foo") {
       set beresp.storage_hint = "foo";
} else if (bereq.http.host ~ "bar") {
       set beresp.storage_hint = "bar";
} else {
       set beresp.storage_hint = "default";
}

ou vcl_fetch (3.0) :

if (req.http.host ~ "foo") {
       set beresp.storage = "foo";
} else if (req.http.host ~ "bar") {
       set beresp.storage = "bar";
} else {
       set beresp.storage = "default";
}

Par exemple, en fonction du TTL :
– Dans le fichier /etc/default/varnish

DAEMON_OPTS="
...
-s ram=malloc,1G \
-s disk=file,/space/varnish/storage,10G \
..."

– Dans vcl_backend_response (4.0) ou vcl_fetch (3.0) :

sub vcl_backend_response {
       # default storage
       set beresp.storage = "ram";
...
       if (beresp.ttl > 86400s) {
              set beresp.storage = "disk";
       }
}