Caché de barniz: ¿TTL predeterminado?

23

He descubierto que puedo configurar el TTL en barniz de la siguiente manera en mi archivo VCL:

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

Pero, ¿cuál es la configuración predeterminada (suponiendo que el servidor de fondo no esté configurando ningún encabezado de control de caché)?

Ade
fuente
Parece que he encontrado la respuesta: 120 segundos: esto está en la lógica VCL predeterminada.
Ade

Respuestas:

24

Esto está en la plantilla predeterminada:

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

Entonces, 120 segundos.

Bart De Vos
fuente
¿Dónde encontraste la plantilla predeterminada?
Neil
Hay un default.vcl que se envía con barniz a partir de al menos 3.0.3 que tiene todas las subrutinas de configuración predeterminadas comentadas en él. La configuración predeterminada 4.0 se puede ver aquí: github.com/mattiasgeniar/varnish-4.0-configuration-templates/…
th3morg
2
Esto no refleja mis observaciones. Es cierto que el ttl predeterminado es 120 segundos, pero la fuente de este número no puede ser ese fragmento. Si lo fuera, los objetos sin ttl se marcarían como hit_for_pass, pero en realidad permanecen en la memoria caché durante 120 segundos.
Kritzefitz
Encontrarás la fuente del vcl incorporado aquí: github.com/varnishcache/varnish-cache/blob/master/bin/varnishd/… . Use las varnish-<version>etiquetas para ver la versión de su lanzamiento de Varnish.
Danny Thomas
34

El TTL predeterminado se puede pasar a través del comando varnishd a través del -tinterruptor de línea de comandos y probablemente se obtiene de un archivo de propiedades en su sistema de archivos. En el sistema CentOS que estoy viendo, se configura usando DEFAULT_TTLfrom /etc/sysconfig/varnish.

Puedes ver la configuración en vivo usando varnishadm así,

varnishadm param.show default_ttl

En realidad, la siguiente lógica VCL predeterminada se relaciona con objetos no almacenables en caché.

  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 "si el objeto no se puede almacenar en caché: pase las solicitudes del cliente para que este objeto se ejecute directamente y simultáneamente durante 2 minutos, no los ponga en cola"

Lea más en /programming/12691489/varnish-hit-for-pass-means

Sergej Alikov
fuente