Drupalページキャッシュと一緒にVarnishを使用することについて質問があります。Varnishは既に匿名ユーザーのページをキャッシュしているので、両方を使用することは少し冗長であるかどうか疑問に思っていましたか?
現在、ページキャッシュをオフにして、ページキャッシュの最大経過時間をゼロ、キャッシュの有効期間を10分に設定しています。
私はこれを正当化しているのでしょうか、それとも明らかなものを見逃しているだけですか?
ありがとう。
@ dicix で回答したように、Drupalパフォーマンス設定で「ページキャッシュ」が有効になっていないと、Drupalは正しい_Cache-Control
_ヘッダーをVarnishに返しません。
Drupalページキャッシュとワニスの両方を同時に使用することで遭遇した問題は、古いコンテンツが両方のTTLの最大値に更新されるまでの遅延が増加する可能性があることです。たとえば、max-ageを5分にすると、古いコンテンツが残り、最大10分間(または、Varnishがブラウザに与えられたキャッシュ制御ヘッダーをより少ない値にリセットしない場合は15分間)配信されます。
私の解決策は、Drupalパフォーマンス設定で「匿名ユーザーのキャッシュページ」をオンに設定し、妥当な「キャッシュページの有効期限」を5分に設定することでした。次に、Drupalが実際にページコンテンツをキャッシュしないように、次のコードを_settings.php
_に追加しました。
_// Use the fake cache for pages since we are caching anonymous HTML with Varnish
if (!class_exists('DrupalFakeCache')) {
$conf['cache_backends'][] = 'includes/cache-install.inc';
}
$conf['cache_class_cache_page'] = 'DrupalFakeCache';
_
DrupalFakeCacheは、何も格納しない、または何も返さないスタブを提供するだけです。
良い点はジマジャンマですが、私の質問は異なりました。
どうやら私はこれの答えを得ました、もし誰か他の人が興味があれば。
「ページキャッシュ」がオンで「ページキャッシュの最大保存期間」が設定されていない限り、ワニスはページをキャッシュしません。 Drupalは、「ページキャッシュ」が有効になっていない場合、正しいキャッシュヘッダーを設定しません。「キャッシュの有効期間」と「ブロックキャッシュ」は、ワニスのキャッシュに影響しません。
基本的にDrupalはキャッシュ制御ヘッダーを設定します。Drupalがページをキャッシュしないように指示されている場合、他のすべて(ワニス、アカマイなど)はどちらかをキャッシュします。
Varnishはこの機能をバイパスするように構成できますが、デフォルトではそうしていません。
これが誰かを助けることを願っています。
特にVarnishサーバーが複数のサイトのフロントエンド/エッジ処理を行っており、Varnishエンドのキャッシュライフタイムがdrupal終わり。
例。
drupalサイトでファイルのキャッシュライフタイムを10分に設定しましたが、Varnishのキャッシュライフタイムを5分に設定しました。
匿名ユーザーがWebサイトにアクセスすると、Varnishはその5分のマークまでのすべてのページを提供しますが、drupalがそこにない、または期限切れの場合にプレイすることを許可します。
有効期限が切れているか、その他の方法でVarnishにない場合、それらが10分未満であると、drupalのキャッシュがそれらを迅速に提供し、Varnishは次の5分間同じことを行います。
これは奇妙に思えるかもしれませんが、これによりVarnishは「ホッター」キャッシュを保持できるようになり、メモリ内にあるため、頻繁にヒットするものだけを保持したいので、キャッシュのライフタイムを短くすることで、奇妙なボールページはなくなります。 (特に前述のように複数のサイトにサービスを提供している場合は)混乱し続けますが、drupalで最も簡単に利用できるようになり、最も大きなディスクベースのキャッシュで終了する可能性があります。
ページキャッシュを有効にする必要があるため、Drupalは正しいキャッシュヘッダーを設定します。
しかし、これはDrupalがページを独自のキャッシュに保存することを意味するわけではありません。Varnishモジュールを使用する場合、settings.phpにこれが含まれます。
$conf['cache_class_cache_page'] = 'VarnishCache';
これにより、ページがDrupalのデフォルトのページキャッシュであるデータベースに書き込まれなくなります。