CacheFlush

コアのキャッシュビン、contribのキャッシュテーブル、カスタムキャッシュクリア関数を組み合わせた設定可能なプリセットを通じて、Drupalのキャッシュクリアをきめ細かく制御します。

cacheflush
1,767 sites
22
drupal.org

インストール

Drupal 11, 10, 9, 8 v2.0.3
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
Cacheflush /admin/cacheflush

CacheFlushモジュールのメイン管理ランディングページ。すべてクリア機能へのアクセスと、メニューに追加された個々のキャッシュフラッシュプリセットへのリンクを提供します。

Cacheflush /admin/structure/cacheflush

すべてのcacheflushプリセットエンティティのViewsベースの一覧。プリセットID、タイトル、作成者、ステータス(公開/非公開)、メニューエントリのステータス、変更日を表示します。ステータスとメニューエントリでフィルタリングする一括操作とフィルターを含みます。

Cacheflushエンティティを追加 /admin/structure/cacheflush/add

新しいキャッシュフラッシュプリセットを作成するためのフォーム。キャッシュソースをカテゴリ別の垂直タブに整理: コアのキャッシュテーブル、その他のコアキャッシュオプション(関数)、Contribのキャッシュテーブル、その他のcontribキャッシュオプション。

Cacheflushエンティティを編集 /cacheflush/{cacheflush}/edit

既存のキャッシュフラッシュプリセットを編集するためのフォーム。追加フォームと同じ構造で、現在の値が事前入力されています。

Cacheflushエンティティを削除 /cacheflush/{cacheflush}/delete

キャッシュフラッシュプリセットを削除するための確認フォーム。

Cacheflushエンティティ設定 /admin/structure/cacheflush/settings

Cacheflushエンティティ設定のための設定フォーム。現在、フィールド設定の管理のためのプレースホルダーを提供しています。

権限 11
Cacheflushでキャッシュをクリア

メインのcacheflushメニューへのアクセスとプリセットを使用したキャッシュクリアを許可

Cacheflushエンティティを管理

Cacheflushエンティティを設定するための管理フォームへのアクセスを許可

自分のプリセットをクリア

現在のユーザーが作成したキャッシュフラッシュプリセットを実行する権限

すべてのプリセットをクリア

所有者に関係なく任意のキャッシュフラッシュプリセットを実行する権限

新しいCacheflushエンティティを作成

新しいキャッシュフラッシュプリセットを作成する権限

自分のエンティティを表示

現在のユーザーが作成したキャッシュフラッシュプリセットを表示する権限

すべてのエンティティを表示

任意のキャッシュフラッシュプリセットを表示する権限

自分のエンティティを編集

現在のユーザーが作成したキャッシュフラッシュプリセットを編集する権限

すべてのエンティティを編集

任意のキャッシュフラッシュプリセットを編集する権限

自分のエンティティを削除

現在のユーザーが作成したキャッシュフラッシュプリセットを削除する権限

すべてのエンティティを削除

任意のキャッシュフラッシュプリセットを削除する権限

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
プリセットがCacheflushメニューに表示されない

プリセットが「公開済み」(ステータス)かつ「メニューエントリ」が有効になっていることを確認してください。/admin/structure/cacheflushのエンティティ一覧でこれらの値を確認してください。また、「cacheflush clear cache」権限があることを確認してください。

Drush使用時に「Entity not published yet」エラー

プリセットは実行可能にするために公開されている必要があります。プリセットを編集して公開済みステータスで保存するか、一括操作を使用して公開してください。

プリセットのcronジョブが作成されない

cacheflush_cronサブモジュールを有効にする前に、Ultimate Cronモジュールがインストールされ有効になっていることを確認してください。cacheflush_cronを先に有効にした場合は、Ultimate Cronをインストールした後に無効にしてから再度有効にしてください。

カスタムのcontribキャッシュオプションが表示されない

contribモジュールは、キャッシュクリアオプションを公開するためにhook_cacheflush_tabs_options()を実装する必要があります。モジュールのキャッシュオプションが表示されない場合、そのモジュールはCacheFlush統合をサポートしていない可能性があります。

Advancedのキャッシュ IDクリアが機能しない

キャッシュIDとサービス(キャッシュビン)の両方を選択していることを確認してください。両方のフィールドが必須です。キャッシュIDは、キャッシュアイテムを保存する際に使用されたcidと正確に一致する必要があります。

Security Notes 3
  • 「cacheflush clear cache」権限は、キャッシュクリアが一時的にサイトのパフォーマンスに影響を与える可能性があるため、信頼できるロールにのみ付与してください
  • 「cacheflush administer」権限は重要なキャッシュをクリアできるプリセットの作成を許可するため、慎重に割り当ててください
  • プリセットはフック経由で定義された任意の関数を実行できます - hook_cacheflush_tabs_options()を実装しているcontribモジュールを確認してください