web-dev-qa-db-ja.com

新しいストーリーが投稿されたときに、ホームページのワニスキャッシュ(およびおそらくビュー?)をクリアする

Drupal 7。

大手出版社のサイトを運営しています。私たちはAcquia Cloudにいます。Varnishを使用して、キャッシュされたページを匿名ユーザーに提供しています。ホームページにはいくつかのビューがあります。1つはニュース記事の実行リストで、もう1つは注目のスライダーです。

私の最小キャッシュ存続時間は5分に設定され、キャッシュページの有効期限は15分に設定されています。各ビューで、コンテンツベースのキャッシュを有効にします。

新しいストーリーをすぐにホームページに表示したいのですが。私はVarnishキャッシュについてのみ心配する必要があると思います。ビューのコンテンツベースのキャッシュはこれらのキャッシュを処理する必要がありますが、正直に言うと、これらすべてを正確にテストする方法がわかりません。

いくつか読んだところ、キャッシュの有効期限やパージなどのモジュールが見つかりました。また、ルールとおそらくキャッシュアクションもインストールする必要があると思います。私はここに投稿して、他の誰かがこれについての経験があり、何らかの指示を与えることができるかどうかを確認すると思いました。

1
Mike

Varnishモジュールをインストールして、admin/config/development/performanceで最小キャッシュ有効期間をnoneに設定します。また、settings.phpに微調整を追加してくださいニスモジュールページから。

これにより、新しいコンテンツが追加されたときにキャッシュが確実にフラッシュされます。 (コンテンツの更新ごとにキャッシュを完全にクリアするとサーバーが過負荷になり、パフォーマンスの問題が発生する場合)もう少し細かく設定したい場合があるため、ここで使用できるいくつかの手順があります。

ワニスの使用に関する素敵な記事 を見つけました。

著者はお勧めします:

  • Varnish設定ページ(admin/config/development/varnish)に移動し、[Varnish Cache Clearing]で[None]を選択します。これにより、コンテンツが変更されたときにすべてのページがフラッシュされないことが保証されます。
    • キャッシュアクションとルールUIモジュールを有効にする
    • [管理] => [ワークフロー] => [ルール]に移動し、[新しいルールを作成]をクリックします
    • 対応するイベントとして「ノード」の下の「既存のコンテンツを更新した後」を選択します
    • 「特定のキャッシュcidをクリアする」アクションを追加します
    • キャッシュビンとしてcache_pageを選択します。
    • 値のテキスト領域に「node/[node:nid]」を入力します。

ノードの1つを編集してみてください。すべてが機能するはずです。現在の違いは、ページ全体ではなく、編集された特定のノードのエントリのみを実際にパージしていることです。別のノードにアクセスしてこれを試すことができます。Varnishヘッダーを見ると、まだキャッシュされていることがわかります。

(関連するビューの)ビューのキャッシュをクリアして、即座に更新することもできます。ブラウザに新しいコンテンツを追加し、ログインしていない別のブラウザウィンドウを更新することで、テストは比較的簡単になります。更新するとすぐに新しいコンテンツが表示されるはずです。

3
Selwyn Polit