Frage Varnish Cache - Standard TTL?


Ich habe festgestellt, dass ich die TTL in Varnish wie folgt in meiner VCL-Datei einstellen kann:

sub vcl_fetch {
    # 1 minute
    set obj.ttl = 1m;
}

Aber wie lautet die Standardeinstellung (vorausgesetzt, der Backend-Server setzt keinen Cache-Control-Header)?


21
2018-05-15 11:02


Ursprung


Sieht aus, als hätte ich die Antwort gefunden: 120 Sekunden - das ist in der Standard-VCL-Logik. - Ade


Antworten:


Dies ist in der Standardvorlage:

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);
}

Also, 120 Sekunden.


23
2018-05-15 12:00



Wo hast du die Standardvorlage gefunden? - Neil
lack-cache.org/docs/3.0/reference/vcl.html - Bart De Vos
Es gibt eine default.vcl, die seit mindestens 3.0.3 mit Lack ausgeliefert wird und in der alle Standard-Config-Subroutinen auskommentiert sind. Die 4.0 Standardkonfiguration kann hier eingesehen werden: github.com/mattiasgeniar/varnish-4.0-configuration-templates/... - th3morg
Dies spiegelt meine Beobachtungen nicht wider. Es ist richtig, dass das Standardttl 120 Sekunden ist, aber die Quelle dieser Nummer kann nicht dieses Snippet sein. Wenn dies der Fall wäre, würden Objekte ohne ein ttl als hit_for_pass markiert werden, aber sie verbleiben tatsächlich für 120 Sekunden im Cache. - Kritzefitz


Die Standard-TTL kann über den Befehl larkennd übergeben werden -t Commandline-Schalter und stammt wahrscheinlich aus einer Eigenschaftendatei in Ihrem Dateisystem. Auf dem CentOS-System gucke ich es mit eingestellt ist DEFAULT_TTL von /etc/sysconfig/varnish.

Sie können die Live-Einstellung mit varnishadm so sehen,

varnishadm param.show default_ttl

Die Standard-VCL-Logik bezieht sich auf nicht cachefähige Objekte.

  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);
  }

bedeutet "wenn das Objekt nicht cachefähig ist - übergeben Sie Client-Anfragen für dieses Objekt, um es direkt und gleichzeitig für 2 Minuten zu senden, und stellen Sie sie nicht in die Warteschlange"

Lesen Sie mehr unter https://stackoverflow.com/questions/12691489/varnish-hit-for-pass-means


31
2018-01-03 13:47