J'ai découvert que je peux définir le TTL en vernis comme suit dans mon fichier VCL:
sub vcl_fetch {
# 1 minute
set obj.ttl = 1m;
}
Mais quel est le paramètre par défaut (en supposant que le serveur principal ne définit aucun en-tête de contrôle de cache)?
C'est dans le modèle par défaut:
sub vcl_fetch {
if (beresp.ttl <= 0s ||
beresp.http.Set-Cookie ||
beresp.http.Vary == "*") {
/*
* Mark as "Hit-For-Pass" for the next 2 minutes
*/
set beresp.ttl = 120 s;
return (hit_for_pass);
}
return (deliver);
}
Donc, 120 secondes.
Par défaut TTL peut être transmis via la commande varnishd via le -t
commutateur de ligne de commande et provient probablement d'un fichier de propriétés de votre système de fichiers. Sur le système CentOS que je regarde, il est défini à l'aide de DEFAULT_TTL
de /etc/sysconfig/varnish
.
Vous pouvez voir le réglage en direct en utilisant varnishadm comme ça,
varnishadm param.show default_ttl
En fait, la logique VCL par défaut suivante concerne les objets qui ne peuvent pas être mis en cache.
sub vcl_fetch {
if (beresp.ttl <= 0s ||
beresp.http.Set-Cookie ||
beresp.http.Vary == "*") {
/*
* Mark as "Hit-For-Pass" for the next 2 minutes
*/
set beresp.ttl = 120 s;
return (hit_for_pass);
}
return (deliver);
}
signifie "si l'objet ne peut pas être mis en cache - passez les demandes des clients pour que cet objet soit directement et simultanément pendant 2 minutes, ne les mettez pas en file d'attente"
En savoir plus sur https://stackoverflow.com/questions/12691489/varnish-hit-for-pass-means