更新された場合に個々のノードのキャッシュをフラッシュする方法はありますか? (匿名ユーザーに変更をすぐに表示するためにdrupalのキャッシュ全体をフラッシュする必要はありませんか?(ルールかモジュールか)
Node_saveを使用している場合、特定のノードのキャッシュは自動的にクリアされます。他の方法を使用してノードを保存している場合は、以下を使用します。
entity_get_controller('node')->resetCache(array($node->nid));
これでうまくいきました。他の回答で提供されたentity_get_controller( 'node')呼び出しが機能しませんでした。
// Clear field cache
$entity->type = 'node';
$entity->id = 54321;
cache_clear_all("field:$entity->type:$entity->id", 'cache_field');
私は Views Custom Cache モジュールがあなたのソリューションであると信じています。
通常どおり「Views Custom Cache」モジュールをインストールします。
最初の引数はNode IDです。
2番目の引数を追加カスタムグローバル:NULL引数-無視され、特定の方法でビューに影響を与えることはありません-キャッシングを除いて!
「フィルター値が利用できない場合」ルールがトリガーされるように、ビューの生成時にこの引数が存在しないことを確認してください。
ビューに「_node/nid
_」などのパスがある場合、nid
はarg(1)
として使用できます。
注:arg()
の値(0、1、2 ...)を調整して、以下のコードスニペットのユースケースに一致させます。
グローバルNull引数の場合:フィルター値が使用できない場合/デフォルト値を指定する/ PHPコードを入力:
_$node = node_load(arg(1));
return $node->changed;
_
これで、2番目の引数(グローバルNull引数)は常に新しいノードの更新日(タイムスタンプ)を返し、「カスタムキャッシュ:ビューのすべての引数」キャッシュオプションを使用できます。
グローバルNull引数は適切に無視され、ビューのレンダリングには影響しませんが、キャッシュに影響します。指定されたNode ID + Nodeの更新された日付ペアに対して一意になります。ノードが更新されると、新しいNode更新日(タイムスタンプ)が2番目の引数としてビューに返され、指定したNode IDのビューキャッシュが自動的に更新されます。