0

私は設定に触れずにVarnishを使用しています(Apacheへの8080へのポート転送のみ)。

しかし、私は2つの問題を抱えています:

  • 画像の URL にアクセスし、画像を削除し、再度アクセスすると存在します... Varnish はそれをキャッシュしました... キャッシュから提供する前に、少なくともファイルが存在するかどうかを最初に確認するように varnish に指示するにはどうすればよいでしょうか?

  • PHP ファイル (つまり、PHP によって生成された HTML コンテンツ) はキャッシュされていません。私は常にヘッダーに表示されます: Age: 0 …何か手がかりはありますか?

ありがとうございました !

4

1 に答える 1

1

画像の URL にアクセスし、画像を削除し、再度アクセスすると存在します... Varnish はそれをキャッシュしました... キャッシュから提供する前に、少なくともファイルが存在するかどうかを最初に確認するように varnish に指示するにはどうすればよいでしょうか?

キャッシングの全体的な目的は、同じ作業 (ファイルの存在の確認と読み込み、または PHP 応答の生成など) を何度も行う必要はなく、生成された応答を再利用することです。Varnish は、そもそもファイルの存在について新しいことはありません (バックエンド サーバーが計算を行いました) ため、「ファイルが少なくとも存在する」かどうかを確認することはできません。

ただし、varnish に URL を永久にキャッシュしないように指示する方法があります。例えば; バックエンドの応答が結果を再利用しないようにキャッシュに指示する場合 (特定の HTTP 応答ヘッダーがこれを示します)、varnish はそれをキャッシュしません。Varnish は (デフォルトで) 十分に賢く、Cookie を含む応答もキャッシュしません (おそらく 2 番目の質問に答えます)。特定の期間 (30 秒など) だけ応答をキャッシュするように varnish に指示できるため、削除はかなり迅速に取得されます。ファイルを変更/削除した後、ワニスから URL を PURGE できます。バックエンド サーバーが応答ヘッダーでこれを正しく通知しない場合は、独自の .vcl ファイルを作成して、この動作をオーバーライドできます。

PHP ファイル (つまり、PHP によって生成された HTML コンテンツ) はキャッシュされていません。私は常にヘッダーに表示されます: Age: 0 …何か手がかりはありますか?

私は推測できます:あなたはクッキーを設定しています。ただし、質問に応答ヘッダーを追加すると、非常に役立ちます。

于 2011-09-08T21:06:28.273 に答える