Tembolok Pernis - TTL default?


23

Saya telah menemukan bahwa saya dapat mengatur TTL di Varnish sebagai berikut di file VCL saya:

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

Tapi apa pengaturan default (dengan asumsi server backend tidak mengatur header kontrol cache)?


Sepertinya saya sudah menemukan jawabannya: 120 detik - ini dalam logika VCL default.
— Ade

Jawaban:


24

Ini ada dalam templat default:

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

Jadi, 120 detik.


Di mana Anda menemukan templat default?
— Neil


Ada default.vcl yang dikirimkan dengan pernis setidaknya 3.0.3 yang memiliki semua subrutin konfigurasi default berkomentar di dalamnya. Konfigurasi default 4.0 dapat dilihat di sini: github.com/mattiasgeniar/varnish-4.0-configuration-templates/…
— th3morg

2
Ini tidak mencerminkan pengamatan saya. Memang benar bahwa ttl default adalah 120 detik, tetapi sumber nomor ini tidak dapat potongan itu. Jika ya, objek tanpa ttl akan ditandai sebagai hit_for_pass, tetapi sebenarnya disimpan dalam cache selama 120 detik.
— Kritzefitz

Anda akan menemukan sumber builtin vcl di sini - github.com/varnishcache/varnish-cache/blob/master/bin/varnishd/… . Gunakan varnish-<version>tag untuk melihat versi untuk rilis Varnish Anda.
— Danny Thomas

34

TTL default dapat dilewatkan melalui perintah varnishd melalui -tsaklar commandline dan mungkin bersumber dari file properti di sistem file Anda. Pada sistem CentOS saya melihat itu diatur menggunakan DEFAULT_TTLdari /etc/sysconfig/varnish.

Anda dapat melihat pengaturan langsung menggunakan varnishadm seperti itu,

varnishadm param.show default_ttl

Sebenarnya, mengikuti logika VCL default terkait dengan objek yang tidak dapat di-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);
  }

berarti "jika objek tidak dapat di-cache - kirimkan permintaan klien untuk objek ini untuk di-backend secara langsung dan simultan selama 2 menit, jangan antri mereka"

Baca lebih lanjut di /programming/12691489/varnish-hit-for-pass-means

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.