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"; } }
Je me suis toujours posé la question si il est possible de changer le stockage d’un object en cours de route, exemple si il depasse un seuil de hit alors il passe en ram alors que par defaut il est sur disque.
Non lorsqu’un objet est dans le cache il ne peut pas changer de storage.