ニスキャッシュ-デフォルトTTL?


23

VCLファイルで次のようにVarnishでTTLを設定できることを発見しました。

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

しかし、デフォルト設定は何ですか(バックエンドサーバーがcache-controlヘッダーを設定しないと仮定した場合)?


私は答えを見つけたように見えます:120秒-これはデフォルトのVCLロジックにあります。
アデ

回答:


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


デフォルトのテンプレートはどこで見つけましたか?
ニール


default.vclには、少なくとも3.0.3の時点でニスが付属しており、デフォルトの構成サブルーチンがすべてコメント化されています。4.0のデフォルトの構成は次のとおり
mattiasgeniar

2
これは私の観察を反映していません。デフォルトのttlは120秒ですが、この数値のソースはそのスニペットにはできません。その場合、ttlのないオブジェクトはhit_for_passとしてマークされますが、実際には120秒間キャッシュに残ります。
クリッツフィッツ

組み込みvclのソースは、github.com / varnishcache / varnish- cache / blob / master / bin / varnishd /…にあります。varnish-<version>タグを使用して、Varnishリリースのバージョンを確認します。
ダニートーマス

34

デフォルトの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分間渡し、それらをキューに入れないでください」

/programming/12691489/varnish-hit-for-pass-meansで詳細を読む

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.