mcpField
D
drupal-caching

drupal-caching

github.com/edutrul開発7354 回インストール21 週間前に更新
リポジトリ

drupal-caching について

Drupal 開発者向けのキャッシュスキルです。レンダー配列のキャッシュメタデータ、タグとコンテキスト、バックエンド操作、サービス注入を扱います。

主な機能

  1. 01レンダー配列のキャッシュメタデータ
  2. 02キャッシュタグとコンテキストの指針
  3. 03キャッシュバックエンドの読み書き
  4. 04キャッシュサービスの注入

活用シーン

  1. 01レンダー内容へのキャッシュメタデータ追加
  2. 02権限や URL に応じた出力の切り替え
  3. 03キャッシュデータの読み取りと無効化

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/edutrul/drupal-ai --skill drupal-caching

インストール後、Claude Code で/drupal-cachingを入力して読み込まれたか確認します。

同梱ファイルREADME.md

詳細

Drupal のキャッシュ

キャッシュメタデータは必ず追加してください。キャッシュメタデータがないと、コンテンツが古いままになります。

レンダー配列のキャッシュメタデータ

$build['content'] = [
  '#markup' => $output,
  '#cache' => [
    'tags' => ['node:' . $node->id(), 'node_list'],
    'contexts' => ['user.permissions', 'url.query_args'],
    'max-age' => Cache::PERMANENT,
  ],
];

キャッシュタグ

タグ無効化されるタイミング
node:{nid}Node {nid} が保存または削除されたとき
node_listいずれかのノードが作成または削除されたとき
user:{uid}ユーザー {uid} が保存されたとき
taxonomy_term:{tid}ターム {tid} が保存されたとき
config:{name}設定オブジェクト {name} が保存されたとき

キャッシュコンテキスト

コンテキスト変化する条件
user.permissionsユーザーの権限(user より優先して使用してください)
user.rolesユーザーのロール
url.pathURL パス
url.query_argsクエリパラメーター
languages現在の言語

キャッシュの読み取り/書き込み

$cached = $this->cacheBackend->get('my_module:my_key');
if ($cached !== FALSE) {
  return $cached->data;
}

$this->cacheBackend->set('my_module:my_key', $data, Cache::PERMANENT, ['node_list']);
$this->cacheBackend->set('my_module:my_key', $data, \Drupal::time()->getRequestTime() + 3600, ['node_list']);
$this->cacheBackend->delete('my_module:my_key');

Cache::invalidateTags(['node:123', 'node_list']);

キャッシュサービスの注入

use Drupal\Core\Cache\CacheBackendInterface;

public function __construct(
  private readonly CacheBackendInterface $cacheBackend,
) {}
# services.yml
my_module.my_service:
  arguments: ['@cache.default']

CacheableDependencyInterface

$build['#cache']['tags'] = Cache::mergeTags(
  $build['#cache']['tags'] ?? [],
  $node->getCacheTags()
);

コメント