Cache Varnish - mặc định TTL?


23

Tôi đã phát hiện ra rằng tôi có thể thiết lập TTL trong Varnish như sau trong tệp VCL của mình:

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

Nhưng cài đặt mặc định là gì (giả sử máy chủ phụ trợ không cài đặt tiêu đề kiểm soát bộ đệm)?


Có vẻ như tôi đã tìm thấy câu trả lời: 120 giây - đây là logic logic VCL mặc định.
Ade

Câu trả lời:


24

Đây là trong mẫu mặc định:

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

Vì vậy, 120 giây.


Bạn đã tìm thấy mẫu mặc định ở đâu?
Neil


Có một default.vcl rằng các tàu có vecni ít nhất là 3.0.3 có tất cả các chương trình con cấu hình mặc định được nhận xét trong đó. Cấu hình mặc định 4.0 có thể được nhìn thấy ở đây: github.com/mattiasgeniar/varnish-4.0-configuration-tem mẫu
trộm

2
Điều này không phản ánh quan sát của tôi. Đúng là ttl mặc định là 120 giây, nhưng nguồn của số này không thể là đoạn trích đó. Nếu đúng như vậy, các đối tượng không có ttl sẽ được đánh dấu là hit_for_pass, nhưng chúng thực sự vẫn còn trong bộ đệm trong 120 giây.
Kritzefitz

Bạn sẽ tìm thấy nguồn của vcl dựng sẵn ở đây - github.com/varnishcache/varnish-cache/blob/master/bin/varnishd/ Lỗi . Sử dụng các varnish-<version>thẻ để xem phiên bản cho bản phát hành Varnish của bạn.
Daniel Thomas

34

TTL mặc định có thể được chuyển qua lệnh var Vecd thông qua công -ttắc dòng lệnh và có thể có nguồn gốc từ một tệp thuộc tính trên hệ thống tệp của bạn. Trên hệ thống CentOS tôi đang xem nó được thiết lập bằng cách sử dụng DEFAULT_TTLtừ /etc/sysconfig/varnish.

Bạn có thể thấy cài đặt trực tiếp bằng cách sử dụng véc ni như vậy,

varnishadm param.show default_ttl

Trên thực tế, theo logic VCL mặc định liên quan đến các đối tượng không lưu trữ được.

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

có nghĩa là "nếu đối tượng không được lưu trong bộ nhớ cache - chuyển yêu cầu của máy khách cho đối tượng này trực tiếp và đồng thời trong 2 phút, không xếp hàng chúng"

Đọc thêm tại /programming/12691361/varnish-hit-for-pass-means

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.