Varnish
清漆記憶體 - 預設 TTL?
我發現我可以在我的 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_TTL
from設置的/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閱讀更多內容