9

Varnishにキャッシュ制御ヘッダーを送信させるための適切な方法について、誰かがアドバイスできることを願っています。現在、私の構成は「Cache-Control: no-cache」をクライアントに送信しています。

助けてくれるかもしれない人に前もって感謝します...

4

3 に答える 3

15

バックエンドは「Cache-Control: no-cache」を Varnish に送信しています。これは次の 2 つのことを意味します。

  • Varnish は応答をキャッシュに保存しません (そのため、次のルックアップは失敗します)
  • クライアント (ブラウザと中間プロキシ) は、応答をキャッシュしません (そして何度も要求します)。

解決策は簡単です。バックエンドから応答を取得した後 (キャッシュに格納する前に)、キャッシュ制御ヘッダーを削除します。

vcl ファイルで次のようにします。

sub vcl_fetch {
  remove beresp.http.Cache-Control;
  set beresp.http.Cache-Control = "public";
}

特定の URL に対してのみこれを行う (( if req.url ~ "" )ロジックでラップする) ことを選択して、より高度な処理を行うことができます。

于 2012-01-26T20:05:53.143 に答える
4

ワニスは、ドキュメントに従ってCache-Control:nocacheを無視します。これを確認する証拠は次のとおりです。

http://drupal.org/node/1418908

その結果を得るには、ヘッダーCache-Controlを検出する必要があります。nocache。バックエンドからキャッシュを無効にするか、バックエンドの応答をキャッシュ不可に設定するか、他のヘッダーでmax-age:0を発行します(今は名前を忘れています)。

于 2012-07-11T02:30:57.617 に答える