Cache Review

DrupalのInternal Page Cache(IPC)とDynamic Page Cache(DPC)の動作を視覚的なインジケーターとデモページで確認・分析できる開発ツールです。

cache_review
10 sites
47
drupal.org

概要

Cache Reviewは、DrupalのInternal Page Cache(IPC、匿名ユーザー向け)とDynamic Page Cache(DPC、全ユーザー向け)のキャッシュメカニズムを理解・分析するための包括的なツールを提供します。このモジュールは、ページ上の各要素にキャッシュステータスインジケーター(C=キャッシュ済み、L=遅延ビルド、N=特定のキャッシュプロパティなし)を視覚的に表示し、ページのどの部分がどのようにキャッシュされているかを簡単に識別できるようにします。

モジュールは、すべてのページ下部に固定された「Page Cache Status」パネルを表示し、キャッシュのヒット/ミス状態、auto-placeholder条件、各要素の詳細なキャッシュメタデータをリアルタイムで表示します。キャッシュマーカーにマウスを合わせると、各render要素に適用されている正確なcache contexts、tags、max-age設定を確認できます。

さらに、Cache Reviewは様々なキャッシュシナリオと動作を示すデモページを提供しており、開発者がキャッシュ設定を試して結果を即座に確認できます。これは、cache bubblingの仕組み、lazy builderがいつ使用されるか、異なるcache contextsがページのキャッシュ可能性にどう影響するかを学ぶのに特に役立ちます。

注意: このモジュールは開発環境専用であり、本番環境では使用しないでください。

Features

  • ページ要素への視覚的なキャッシュステータスインジケーター:C(キャッシュ済み)、L(遅延ビルド)、N(キャッシュプロパティなし)
  • IPC/DPCのヒット/ミス状態、auto_placeholder_conditions、Big Pipeモジュールの状態を表示する固定Page Cache Statusパネル
  • マウスオーバーで詳細なキャッシュメタデータ(contexts、tags、max-age)をツールチップ表示
  • 様々なキャッシュシナリオと動作を示す複数のデモページ
  • 全アイテム表示、遅延ビルドアイテムのみ、キャッシュ済みアイテムのみ、フレーミング無効化の設定オプション
  • 管理ページでのキャッシュ情報分析オプション
  • 対象を絞ったキャッシュ分析用のカスタムHTML ID属性の指定
  • lazy builderと非lazy builderのキャッシュパターンを示すBlockプラグイン
  • キャッシュ可視化を注入するためにDrupalのrender cacheとrendererをラップするサービスデコレーター

Use Cases

Drupalのキャッシュシステムの学習

Drupal初心者の開発者は/cache-reviewのデモページを使用して、異なるキャッシュ設定がページのキャッシュ可能性にどう影響するかを理解できます。各デモページは様々なキャッシュ設定(max-age、contexts、tags、keys)を持つ要素と、その結果のキャッシュ動作を表示します。

キャッシュ問題のデバッグ

ページが予期せず古いコンテンツを表示したり、適切にキャッシュされない場合、開発者はCache Reviewを有効にして、どの要素に問題のあるキャッシュ設定があるかを確認できます。太字スタイルの「N」マーカーは、キャッシュプロパティがauto_placeholder_conditionsに一致する要素を示し、cache bubblingの問題を引き起こす可能性があります。

レンダリングパフォーマンスの最適化

どの要素がキャッシュ済み(C)、遅延ビルド(L)、非キャッシュ(N)かを識別することで、開発者はcache keysの追加、max-age値の調整、lazy builderの実装について情報に基づいた判断を下し、ページパフォーマンスを向上させることができます。

lazy builderとplaceholderの理解

デモページは、#lazy_builder、#create_placeholder、auto-placeholderingがどのように連携するかを示します。開発者は、Drupalがauto_placeholder_conditionsに基づいて自動的にplaceholderを作成するタイミングと、これがページ全体のキャッシュ可能性にどう影響するかを確認できます。

キャッシュ無効化のテスト

デモページ要素に表示される時刻値を観察することで、開発者はcache tagsが正しく機能しているかを確認できます。キャッシュからの要素は古いタイムスタンプを表示し、新しくレンダリングされた要素は現在の時刻を表示します。

Tips

  • ツールチップで表示される以上の情報が必要な場合は、ブラウザコンソールを使用して要素の詳細なキャッシュメタデータを確認してください
  • コントローラー(CacheReviewController.php)でキャッシュ設定を変更し、デモページでの視覚的な変化を観察して実験してください
  • 太字のCまたはNインジケーターが付いた要素に注意してください - これらはauto_placeholder_conditionsに一致するキャッシュプロパティを持ち、ページのキャッシュ可能性に影響する可能性があります
  • デバッグ時は、まず「全アイテムをフレーム」モードで全体像を把握し、その後「キャッシュ済みアイテムのみフレーム」や「遅延ビルドアイテムのみフレーム」で絞り込んでください
  • IPC(Internal Page Cache)は匿名ユーザーにのみ影響し、DPC(Dynamic Page Cache)は全ユーザーに影響することを忘れないでください
  • 各要素に表示される時刻は、キャッシュされたコンテンツと新鮮なコンテンツを識別するのに役立ちます - キャッシュされた要素は古いタイムスタンプを表示します

Technical Details

Admin Pages 1
Cache Review設定 /admin/config/cache-review

Cache Reviewがページ上でキャッシュ情報を表示する方法を設定します。キャッシュインジケーターでフレーム表示する要素と、管理ページを分析するかどうかを制御します。

Hooks 2
hook_preprocess_html

キャッシュ可視化CSSとJavaScriptを有効にするため、全ページにcache_reviewライブラリをアタッチします。

hook_help

ヘルプページでCache Reviewモジュールのヘルプテキストを提供し、キャッシュステータス表示とデモページの使用方法を説明します。

Troubleshooting 4
Page Cache Statusパネルが表示されない

モジュールが有効になっていることを確認し、管理ルート上にいないことを確認してください(「管理ページでキャッシュ情報をチェック」が有効でない限り)。また、JS/CSSアセットが正しく読み込まれていることを確認してください。

全ての要素が「N」(キャッシュプロパティなし)マーカーを表示する

これは通常、要素にcache keysがないことを意味します。#cache['keys']が定義されている要素のみが個別にキャッシュできます。render arrayに適切なキャッシュメタデータが含まれているか確認してください。

ページが常にDPCでMISSを表示する

ページキャッシュを妨げる「user」や「session」などのcache contextsを持つ要素を探してください。これらは理想的にはlazy builderでラップする必要があります。/cache-review/uncacheable-lazy-keysのデモページがこのシナリオを示しています。

管理ページでキャッシュマーカーが表示されない

デフォルトでは管理ルートは除外されています。/admin/config/cache-reviewに移動し、「管理ページでキャッシュ情報をチェック」を有効にして管理ページを分析してください。

Security Notes 3
  • このモジュールは開発環境専用です - 内部キャッシュメタデータが公開されるため、本番環境では使用しないでください
  • モジュールはコアサービスをデコレートするため、パフォーマンスに影響する可能性があります - 積極的にデバッグしていない時は無効にしてください
  • キャッシュ情報ツールチップは、エンドユーザーに公開すべきでない実装の詳細を明らかにする可能性があります