web-dev-qa-db-ja.com

Varnishキャッシュ-デフォルトのTTL?

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

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

しかし、デフォルトの設定は何ですか(バックエンドサーバーがキャッシュ制御ヘッダーを設定していないと仮定)?

23
Ade

これはデフォルトのテンプレートにあります:

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

24
Bart De Vos

デフォルト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 をご覧ください

34
Sergej Alikov