web-dev-qa-db-fra.com

Cache de vernis - TTL par défaut?

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)?

23
Ade

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.

24
Bart De Vos

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

34
Sergej Alikov