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.