Pamięć podręczna lakieru - domyślny TTL?

23

Odkryłem, że mogę ustawić TTL w Varnish w następujący sposób w moim pliku VCL:

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

Ale jakie jest ustawienie domyślne (zakładając, że serwer zaplecza nie ustawia nagłówka kontroli pamięci podręcznej)?

Ade
źródło
Wygląda na to, że znalazłem odpowiedź: 120 sekund - jest to domyślna logika VCL.
Ade

Odpowiedzi:

24

To jest w domyślnym szablonie:

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

120 sekund.

Bart De Vos
źródło
Gdzie znalazłeś domyślny szablon?
Neil,
Istnieje plik default.vcl, który jest dostarczany z lakierem od wersji co najmniej 3.0.3, z komentarzem w nim wszystkich domyślnych podprogramów konfiguracji. Domyślną konfigurację 4.0 można zobaczyć tutaj: github.com/mattiasgeniar/varnish-4.0-configuration-templates/…
th3morg
2
To nie odzwierciedla moich obserwacji. Prawdą jest, że domyślnym ttl jest 120 sekund, ale źródłem tej liczby nie może być ten fragment kodu. Gdyby tak było, obiekty bez ttl zostałyby oznaczone jako hit_for_pass, ale faktycznie pozostają w pamięci podręcznej przez 120 sekund.
Kritzefitz,
Tutaj znajdziesz źródło wbudowanego vcl - github.com/varnishcache/varnish-cache/blob/master/bin/varnishd/… . Użyj varnish-<version>tagów, aby zobaczyć wersję swojego wydania Varnish.
Danny Thomas
34

Domyślne TTL można przekazać za pomocą polecenia varnishd za pomocą -tprzełącznika wiersza poleceń i prawdopodobnie pochodzi ono z pliku właściwości w systemie plików. W systemie CentOS Patrzę na to ustawiany jest za pomocą DEFAULT_TTLod /etc/sysconfig/varnish.

Możesz zobaczyć ustawienia na żywo za pomocą takiego lakieru,

varnishadm param.show default_ttl

W rzeczywistości przestrzeganie domyślnej logiki VCL dotyczy obiektów, które nie mogą być buforowane.

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

oznacza „jeśli obiekt nie jest buforowalny - przekaż żądania klientów dla tego obiektu do zaplecza bezpośrednio i jednocześnie przez 2 minuty, nie umieszczaj ich w kolejce”

Czytaj więcej na /programming/12691489/varnish-hit-for-pass-means

Sergej Alikov
źródło