Cache de vernis - TTL par défaut?

23

J'ai découvert que je peux définir le TTL dans Varnish 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)?

Ade
la source
On dirait que j'ai trouvé la réponse: 120 secondes - c'est dans la logique VCL par défaut.
Ade

Réponses:

24

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.

Bart De Vos
la source
Où avez-vous trouvé le modèle par défaut?
Neil
Il existe un fichier default.vcl fourni avec du vernis à partir d'au moins 3.0.3 qui contient tous les sous-programmes de configuration par défaut. La configuration par défaut 4.0 peut être vue ici: github.com/mattiasgeniar/varnish-4.0-configuration-templates/…
th3morg
2
Cela ne reflète pas mes observations. Il est vrai que le ttl par défaut est de 120 secondes, mais la source de ce numéro ne peut pas être cet extrait. Si c'était le cas, les objets sans ttl seraient marqués comme hit_for_pass, mais ils resteraient en fait dans le cache pendant 120 secondes.
Kritzefitz
Vous trouverez ici la source de la vcl intégrée - github.com/varnishcache/varnish-cache/blob/master/bin/varnishd/… . Utilisez les varnish-<version>balises pour voir la version de votre version de Varnish.
Danny Thomas
34

Le TTL par défaut peut être transmis via la commande varnishd via le -tcommutateur de ligne de commande et provient probablement d'un fichier de propriétés sur votre système de fichiers. Sur le système CentOS que je regarde, il est défini à l'aide DEFAULT_TTLde /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 /programming/12691489/varnish-hit-for-pass-means

Sergej Alikov
la source