Varnish Cache - TTL predefinito?


23

Ho scoperto che posso impostare il TTL in Varnish come segue nel mio file VCL:

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

Ma qual è l'impostazione predefinita (supponendo che il server back-end non stia impostando alcuna intestazione controllo cache)?


Sembra che ho trovato la risposta: 120 secondi - questo è nella logica VCL predefinita.
Ade,

Risposte:


24

Questo è nel modello predefinito:

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

Quindi, 120 secondi.


Dove hai trovato il modello predefinito?
Neil,


Esiste un default.vcl fornito con vernice almeno 3.0.3 che contiene tutte le subroutine di configurazione predefinite commentate. La configurazione di default 4.0 può essere vista qui: github.com/mattiasgeniar/varnish-4.0-configuration-templates/…
th3morg

2
Questo non rispecchia le mie osservazioni. È vero che il ttl predefinito è 120 secondi, ma la fonte di questo numero non può essere quel frammento. Se lo fosse, gli oggetti senza ttl verrebbero contrassegnati come hit_for_pass, ma in realtà rimarranno nella cache per 120 secondi.
Kritzefitz

Qui troverai la fonte del vcl incorporato - github.com/varnishcache/varnish-cache/blob/master/bin/varnishd/… . Usa i varnish-<version>tag per vedere la versione della tua versione di Varnish.
Danny Thomas,

34

Il TTL predefinito può essere passato tramite il comando varnishd tramite l'opzione della -triga di comando ed è probabilmente proveniente da un file delle proprietà sul file system. Sul sistema CentOS che sto guardando è impostato usando DEFAULT_TTLda /etc/sysconfig/varnish.

Puoi vedere l'impostazione live usando varnishadm in questo modo,

varnishadm param.show default_ttl

In realtà, seguire la logica VCL predefinita si riferisce a oggetti non memorizzabili nella 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);
  }

significa "se l'oggetto non è memorizzabile nella cache - passa le richieste client per questo oggetto per il back-end direttamente e simultaneamente per 2 minuti, non metterle in coda"

Maggiori informazioni su /programming/12691489/varnish-hit-for-pass-means

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.