วานิชแคช - TTL เริ่มต้น?


23

ฉันได้ค้นพบว่าฉันสามารถตั้งค่า TTL ในวานิชดังต่อไปนี้ในไฟล์ VCL ของฉัน:

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

แต่การตั้งค่าเริ่มต้นคืออะไร (สมมติว่าเซิร์ฟเวอร์ด้านหลังไม่มีการตั้งค่าส่วนหัวควบคุมแคช)


ดูเหมือนว่าฉันได้พบคำตอบ: 120 วินาที - นี่เป็นตรรกะ VCL เริ่มต้น
Ade

คำตอบ:


24

นี่คือเทมเพลตเริ่มต้น:

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 วินาที


คุณพบแม่แบบเริ่มต้นที่ใด
Neil


มี default.vcl ที่มาพร้อมกับวานิชอย่างน้อย 3.0.3 ซึ่งมีรูทีนย่อย config เริ่มต้นทั้งหมดที่ใส่ความคิดเห็นไว้ สามารถดูการกำหนดค่าเริ่มต้น 4.0 ได้ที่นี่: github.com/mattiasgeniar/varnish-4.0-configuration-templates/…
th3morg

2
นี่ไม่ได้สะท้อนการสังเกตของฉัน มันเป็นความจริงที่ค่า ttl เริ่มต้นคือ 120 วินาที แต่ที่มาของตัวเลขนี้ไม่สามารถเป็นตัวอย่างได้ หากเป็นเช่นนั้นวัตถุที่ไม่มี ttl จะถูกทำเครื่องหมายเป็น hit_for_pass แต่จริง ๆ แล้วมันจะยังคงอยู่ในแคชเป็นเวลา 120 วินาที
Kritzefitz

คุณจะพบแหล่งที่มาของ VCL builtin ที่นี่ - github.com/varnishcache/varnish-cache/blob/master/bin/varnishd/... ใช้varnish-<version>แท็กเพื่อดูรุ่นสำหรับน้ำยาเคลือบเงาของคุณ
Danny Thomas

34

Default TTL สามารถส่งผ่านคำสั่ง varnishd ผ่าน-tสวิตช์ commandline และอาจมาจากไฟล์คุณสมบัติในระบบไฟล์ของคุณ ในระบบ CentOS ฉันกำลังมองหาที่จะถูกตั้งค่าการใช้จากDEFAULT_TTL/etc/sysconfig/varnish

คุณสามารถดูการตั้งค่าสดโดยใช้ varnishadm เช่นนี้

varnishadm param.show default_ttl

ที่จริงแล้ว VCL ลอจิกเริ่มต้นต่อไปนี้เกี่ยวข้องกับวัตถุที่ไม่สามารถแคชได้

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

หมายถึง "ถ้าวัตถุไม่สามารถแคชได้ - ส่งคำขอของไคลเอ็นต์สำหรับวัตถุนี้เพื่อแบ็กเอนด์โดยตรงและพร้อมกันเป็นเวลา 2 นาทีไม่ต้องจัดคิว"

อ่านเพิ่มเติมได้ที่/programming/12691489/varnish-hit-for-pass-means

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.