Cache Exclude
管理者が特定のパスやコンテンツタイプをDrupalのページキャッシュから選択的に除外できるシンプルなモジュールです。
cacheexclude
インストール
composer require 'drupal/cacheexclude:^2.1'
composer require 'drupal/cacheexclude:^2.0'
composer require 'drupal/cacheexclude:8.x-1.0'
概要
Cache Excludeは、Drupalにおけるページキャッシュの例外を管理するためのシンプルなソリューションを提供します。Drupalのページキャッシュは匿名ユーザー向けにページをキャッシュすることでパフォーマンスを向上させますが、動的コンテンツ、ランダムコンテンツ、またはローテーションコンテンツを含む一部のページは、正しく機能するためにキャッシュをバイパスする必要があります。
このモジュールを使用すると、サイト管理者はURLパス(ワイルドカードサポート付き)を指定するか、コンテンツタイプを選択することで、キャッシュされるべきでないページを定義できます。訪問者が除外されたページにアクセスすると、モジュールはDrupalのページキャッシュキルスイッチを使用してキャッシュを防止し、動的コンテンツが真に動的であることを保証します。
このモジュールはDrupalのキャッシュシステムとシームレスに統合され、Drupal 7からアップグレードするサイト向けのマイグレーションサポートも含まれています。
Features
- シンプルなテキストエリアインターフェースを使用して、特定のURLパスをページキャッシュから除外
- パス除外でのワイルドカードパターンのサポート(例:/blog/* でブログ配下のすべてのサブページを除外)
- チェックボックス選択によるコンテンツタイプ全体のページキャッシュからの除外
- 内部パスとパスエイリアスの両方で動作
- 信頼性の高いキャッシュバイパスのためにDrupalネイティブのページキャッシュキルスイッチを使用
- シームレスなアップグレードのためのDrupal 7からDrupal 9/10/11へのマイグレーションサポートを含む
- 設定保存時にすべてのキャッシュを自動的にフラッシュし、即座に効果を反映
Use Cases
動的コンテンツブロックを含むページの除外
フロントページにランダムな引用、おすすめ商品、またはローテーションバナーなど、ページ読み込みごとに変化するコンテンツが表示される場合、除外リストに<front>を追加できます。これにより、匿名の訪問者は常にキャッシュされたバージョンではなく最新のコンテンツを見ることができます。
パーソナライズされたランディングページの除外
URLパラメータやサーバーサイドロジックに基づいてパーソナライズされたコンテンツを含むマーケティングキャンペーンでは、ランディングページのパス(例:/landing/*)を追加してキャッシュを防止し、各訪問者が意図されたパーソナライズされたコンテンツを確実に見られるようにします。
イベントやニュースコンテンツタイプの除外
記事やイベントのコンテンツタイプが頻繁に時間的制約のある情報やリアルタイムデータを表示する場合、設定でこれらのコンテンツタイプを選択して、そのタイプのすべてのNodeが決してキャッシュされないようにします。
サードパーティ統合を含むページの除外
リアルタイムフィード、株価ティッカー、その他の動的なサードパーティコンテンツを埋め込んだページは、パスで除外することで埋め込みコンテンツが常に最新であることを保証できます。
Drupal 7からのマイグレーション
Drupal 7からアップグレードする場合、モジュールは既存のキャッシュ除外設定を自動的にマイグレーションします。cacheexclude_settingsマイグレーションを実行して、パスとNodeタイプの除外設定を新しいサイトに転送してください。
Tips
- モジュールは内部パスとエイリアスの両方をチェックするため、可能な限り除外リストにはパスエイリアスを使用してください
- フロントページは実際のパスではなく、特別な<front>トークンを使用して除外できます
- 多くのページを除外するとサイトのパフォーマンスに悪影響を与える可能性があります - 本当に動的コンテンツが必要なページのみを除外してください
- 開発とデバッグでは、X-Drupal-Cacheレスポンスヘッダーを確認してください:「UNCACHEABLE (response policy)」はページがキャッシュから除外されたことを示します
- Drupal 7からマイグレーションする際は、コンテンツタイプを適切にマッピングするために、cacheexclude_settingsの前にd7_node_typeマイグレーションを実行してください
Technical Details
Admin Pages 1
/admin/config/system/cacheexclude
Drupalのページキャッシュから除外するページとコンテンツタイプを設定します。設定された条件に一致するページは匿名ユーザー向けにキャッシュされず、動的コンテンツが正しく機能できるようになります。
Troubleshooting 4
匿名ユーザー(ログアウト状態)としてテストしていることを確認してください。ページキャッシュは匿名ユーザーにのみ適用されます。また、ページキャッシュモジュールが有効になっていること、パス形式が正しいこと(先頭にスラッシュが必要)を確認してください。
正しいワイルドカード構文を使用していることを確認してください。ワイルドカードとして*を使用します(例:/blog/* は /blog/post-1、/blog/post-2 などに一致します)。パターンは内部パスまたはパスエイリアスのいずれかに一致する必要があります。
そのNodeが実際に選択したコンテンツタイプであることを確認してください。Node編集フォームまたはDrushでコンテンツタイプのマシン名を確認してください。また、cacheexcludeモジュールが有効で設定が保存されていることを確認してください。
Cache Excludeは設定保存時にすべてのキャッシュを自動的にフラッシュします。それでも変更が反映されない場合は、drush crまたは管理UI(/admin/config/development/performance)でキャッシュを手動でクリアしてください。
Security Notes 3
- キャッシュ除外設定には「administer site configuration」権限が必要で、これは強力な管理者権限です
- ページをキャッシュから除外すると、悪意のあるリクエストによるサーバー負荷の増加にサイトがさらされる可能性があります - 除外は慎重に使用してください
- このモジュールはセキュリティの脆弱性を導入しませんが、キャッシュカバレッジを減らすとサイトがトラフィックスパイクに対してより脆弱になる可能性があります