CacheFlush
コアのキャッシュビン、contribのキャッシュテーブル、カスタムキャッシュクリア関数を組み合わせた設定可能なプリセットを通じて、Drupalのキャッシュクリアをきめ細かく制御します。
cacheflush
インストール
composer require 'drupal/cacheflush:^2.0'
概要
CacheFlushは、Drupalのキャッシュクリアをきめ細かく管理するための究極のツールです。標準的な「すべてのキャッシュをクリア」アプローチとは異なり、このモジュールでは特定のタスクに必要なキャッシュコンポーネントのみをクリアするカスタムプリセットを作成できます。
このモジュールは開発者、管理者、編集者のいずれにも適しています。各プリセットには、コアのキャッシュビン(bootstrap、config、render、menuなど)、contribモジュールのキャッシュ、静的リセットやTwigキャッシュクリアなどの特定のキャッシュ関数、さらにadvancedサブモジュールを使用すれば特定のキャッシュIDやキャッシュタグなど、さまざまなキャッシュクリアオプションを組み合わせることができます。
プリセットは管理メニューから直接実行したり、Drushコマンド経由で実行したり、cronジョブを通じて自動的に実行したりできます。各プリセットへのアクセスはDrupalの権限システムで制御でき、異なるロールに異なるキャッシュクリア操作へのアクセスを許可できます。
Features
- 異なるキャッシュソースを組み合わせた無制限のカスタムキャッシュフラッシュプリセットを作成
- コアのキャッシュビンをクリア(bootstrap、config、render、menu、entity、discoveryなど)
- インストール済みモジュールから自動検出されたcontribモジュールのキャッシュテーブルをクリア
- drupal_static_reset、CSS/JSアセットのフラッシュ、コンテナの無効化、Twigキャッシュのワイプ、プラグインキャッシュのクリア、モジュール/テーマデータの再構築などの特定のキャッシュ関数を実行
- ビン別の特定キャッシュIDのクリアとキャッシュタグの無効化のためのAdvancedモード
- 管理メニュー統合によるクイックアクセス(プリセットごとのメニューエントリをオプションで追加可能)
- コマンドラインからプリセットをクリアするためのDrushコマンドサポート
- スケジュールされたキャッシュクリアのためのUltimate Cron経由のcronジョブ統合
- 一括操作(公開、非公開、メニューエントリの追加/削除、削除)を備えたViewsベースの管理インターフェース
- 自分のプリセットと他のプリセットの表示、編集、削除、実行に対する個別の権限による細かなアクセス制御
- カスタムモジュールがキャッシュクリアオプションを拡張したり、キャッシュクリアイベントに反応したりするためのフック
Use Cases
開発: テンプレート変更後にTwigキャッシュのみをクリア
Twig PHPストレージキャッシュのみをクリアするプリセットを作成します。.html.twigテンプレートファイルのみを変更した場合、これはすべてのキャッシュをクリアするよりもはるかに高速です。「その他のコアキャッシュオプション」の「twig」オプションを選択して保存します。テーマ開発中にワンクリックでアクセスできるようにメニューに追加します。
テーマ開発: renderとassetキャッシュをリセット
「render」キャッシュビン、「asset」(CSS/JS)クリア、「twig」キャッシュを組み合わせたプリセットを作成します。これにより、コンテナ全体やモジュールデータを再構築することなく、フロントエンドの変更に必要なすべてをクリアできます。
プラグイン開発: discoveryとpluginキャッシュをクリア
「discovery」キャッシュビンと「plugin」オプションを持つプリセットを作成します。カスタムプラグイン(Block、Fieldなど)を開発する際に、完全なキャッシュ再構築なしで新規または変更されたプラグイン定義をすばやく認識するために使用します。
コンテンツエディター: キャッシュタグで特定のページキャッシュをクリア
Advancedサブモジュールを使用して、「node:123」や「taxonomy_term:45」などの特定のキャッシュタグを無効化するプリセットを作成します。これにより、エディターはサイトの残りの部分に影響を与えることなく、特定のコンテンツのキャッシュをクリアできます。
cronによるスケジュールされたキャッシュメンテナンス
Cronサブモジュールを有効にし、renderキャッシュをクリアするプリセットを作成します。このプリセットでcronを有効にし、低トラフィック時間帯に毎時実行するようにUltimate Cronジョブを設定します。これにより、高トラフィックサイトでrenderキャッシュが無制限に増大するのを防ぎます。
Drush経由のCI/CDパイプラインでのキャッシュクリア
Drushサブモジュールを使用してキャッシュクリアをデプロイメントスクリプトに統合します。異なるデプロイメントシナリオ用のプリセットを作成し(コードのみのデプロイではコンテナの無効化のみ、機能デプロイではルーターの再構築が必要な場合など)、デプロイメントパイプラインで「drush cf [id]」を呼び出します。
Tips
- 開発中によく必要なものだけをクリアするプリセットから始めてください - ほとんどのタスクでは完全なキャッシュ再構築は必要ありません
- 頻繁に使用するプリセットを管理メニューに追加して、管理インターフェースのどこからでもワンクリックでアクセスできるようにしてください
- Advancedサブモジュールのキャッシュタグ機能を使用して、匿名ページキャッシュに影響を与えることなくコンテンツ固有のキャッシュを無効化してください
- デバッグ時には、すべてをクリアする「最終手段」プリセットを作成しますが、日常の作業では時間を節約するために特定のプリセットを使用してください
- 「Dev: Twigのみ」や「Deploy: 完全再構築」のようなプリセット命名規則を検討して、メニューで目的が明確になるようにしてください
Technical Details
Admin Pages 6
/admin/cacheflush
CacheFlushモジュールのメイン管理ランディングページ。すべてクリア機能へのアクセスと、メニューに追加された個々のキャッシュフラッシュプリセットへのリンクを提供します。
/admin/structure/cacheflush
すべてのcacheflushプリセットエンティティのViewsベースの一覧。プリセットID、タイトル、作成者、ステータス(公開/非公開)、メニューエントリのステータス、変更日を表示します。ステータスとメニューエントリでフィルタリングする一括操作とフィルターを含みます。
/admin/structure/cacheflush/add
新しいキャッシュフラッシュプリセットを作成するためのフォーム。キャッシュソースをカテゴリ別の垂直タブに整理: コアのキャッシュテーブル、その他のコアキャッシュオプション(関数)、Contribのキャッシュテーブル、その他のcontribキャッシュオプション。
/cacheflush/{cacheflush}/edit
既存のキャッシュフラッシュプリセットを編集するためのフォーム。追加フォームと同じ構造で、現在の値が事前入力されています。
/cacheflush/{cacheflush}/delete
キャッシュフラッシュプリセットを削除するための確認フォーム。
/admin/structure/cacheflush/settings
Cacheflushエンティティ設定のための設定フォーム。現在、フィールド設定の管理のためのプレースホルダーを提供しています。
権限 11
Hooks 4
hook_cacheflush_tabs_options
プリセット作成フォームに表示されるカスタムキャッシュクリアオプションを定義します。各オプションには、説明、カテゴリタブ、実行する関数を指定します。
hook_cacheflush_ui_tabs
プリセット作成フォームでキャッシュクリアオプションを整理するためのカスタムタブ/カテゴリを定義します。
hook_cacheflush_before_clear
キャッシュフラッシュプリセットがクリアされる前に実行されます。モジュールがキャッシュクリア前にアクションやログ記録を実行できます。
hook_cacheflush_after_clear
キャッシュフラッシュプリセットがクリアされた後に実行されます。モジュールがクリーンアップや通知アクションを実行できます。
Drush Commands 1
drush cacheflush [id]
定義済みのcacheflushプリセットを使用してキャッシュをクリアします。ID引数なしで、利用可能なすべての公開済みプリセットを一覧表示します。
Troubleshooting 5
プリセットが「公開済み」(ステータス)かつ「メニューエントリ」が有効になっていることを確認してください。/admin/structure/cacheflushのエンティティ一覧でこれらの値を確認してください。また、「cacheflush clear cache」権限があることを確認してください。
プリセットは実行可能にするために公開されている必要があります。プリセットを編集して公開済みステータスで保存するか、一括操作を使用して公開してください。
cacheflush_cronサブモジュールを有効にする前に、Ultimate Cronモジュールがインストールされ有効になっていることを確認してください。cacheflush_cronを先に有効にした場合は、Ultimate Cronをインストールした後に無効にしてから再度有効にしてください。
contribモジュールは、キャッシュクリアオプションを公開するためにhook_cacheflush_tabs_options()を実装する必要があります。モジュールのキャッシュオプションが表示されない場合、そのモジュールはCacheFlush統合をサポートしていない可能性があります。
キャッシュIDとサービス(キャッシュビン)の両方を選択していることを確認してください。両方のフィールドが必須です。キャッシュIDは、キャッシュアイテムを保存する際に使用されたcidと正確に一致する必要があります。
Security Notes 3
- 「cacheflush clear cache」権限は、キャッシュクリアが一時的にサイトのパフォーマンスに影響を与える可能性があるため、信頼できるロールにのみ付与してください
- 「cacheflush administer」権限は重要なキャッシュをクリアできるプリセットの作成を許可するため、慎重に割り当ててください
- プリセットはフック経由で定義された任意の関数を実行できます - hook_cacheflush_tabs_options()を実装しているcontribモジュールを確認してください