Cache API
Cache APIはDrupal 8で大幅に改善されました。次のセクションでは、各機能について詳しく説明します。
簡単な概要については、APIドキュメントのCache APIページも参照してください。
キャッシュ可能性メタデータ
直接レンダリングされるもの、または何を表示するかを決定するために使用されるものはすべて、キャッシュのメタデータを提供します - アクセス結果からエンティティやURLまで。
キャッシュのメタデータは3つのプロパティで構成されています:
- キャッシュタグ
エンティティや設定など、Drupalによって管理されるデータへの依存関係用
- キャッシュコンテキスト
バリアント用。つまり、リクエストコンテキストへの依存関係
- キャッシュmax-age
時間に敏感なキャッシュ用。つまり、時間ベースの依存関係
実践:Cache APIを通常どのように使用するか
一般的に、コードはオブジェクト(ブロック、エンティティなど)のレンダリングで終わり、コントローラーはレンダー配列またはレスポンスを返します。したがって、通常はCache APIを直接操作することはありません。代わりに、次を使用します:
レンダリングキャッシュ(フラグメントキャッシュとも呼ばれます)
レンダーAPIは、レンダー配列に組み込まれたキャッシュのメタデータを使用して、キャッシュ(またはレンダリング)を実行します。したがって、Cache APIを使用してレンダーキャッシュを操作すべきではありません(キャッシュアイテムの取得も作成も)。
レンダー配列のキャッシュ可能性を参照してください。
レスポンスキャッシュ
レンダーAPI(前のセクションを参照)によって使用されるキャッシュのメタデータは、CacheableResponseInterfaceを実装するResponseオブジェクト(通常はHtmlResponse)までバブルアップします。
これらのResponseオブジェクトのキャッシュのメタデータにより、Drupal 8にはデフォルトで有効なPage CacheとDynamic Page Cacheが付属できます。これらが透過的に動作できるようにするためです:常に最新であり、常に適切にバリエーションします。
CacheableResponseInterfaceを参照してください。