Varnish

清漆記憶體 - 預設 TTL?

  • May 1, 2013

我發現我可以在我的 VCL 文件中按如下方式在 Varnish 中設置 TTL:

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

但是預設設置是什麼(假設後端伺服器沒有設置記憶體控制標頭)?

這是在預設模板中:

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秒。

預設 TTL 可以通過命令-t行開關通過 varnishd 命令傳遞,並且可能來自文件系統上的屬性文件。在 CentOS 系統上,我正在查看它是使用DEFAULT_TTLfrom設置的/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 分鐘,不要將它們排隊”

在https://stackoverflow.com/questions/12691489/varnish-hit-for-pass-means閱讀更多內容

引用自:https://serverfault.com/questions/389202