VCLファイルで次のようにTTL Varnishに設定できることを発見しました。
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
の/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 をご覧ください