web-dev-qa-db-ja.com

キャッシュフィールド/エンティティ/ノード

リソースを大量に消費するフォーマット表示機能を持つカスタムフィールド/ウィジェットがあります。現在、フィールドの_hook_field_formatter_view_関数内でcache_set()/cache_get()を使用して結果をキャッシュしています。

これを行うことができるより良い方法はありますか? drupal_render()の_#cache_プロパティを使用しようとすると、出力がキャッシュされましたが、それでも_hook_field_formatter_view_関数を実行しました。

基本的に、(匿名ユーザーの)全ページキャッシュを行う方法は知っていますが、(すべての人の)フィールド/ノード/エンティティをどのようにキャッシュしますか?

5
Kevin

現在、私のフィールドのhook_field_formatter_view関数内でcache_set()/ cache_get()を使用して結果をキャッシュしています

正直なところ、これはそれを実行するための悪い方法ではありません。リソースを大量に消費するカスタムロジックがある場合は、通常、独自のキャッシュの決定に責任を持つことが適切です。正直なところ、もっと多くの開発者がcache_get/set()に慣れてほしいと思います。

Entitycacheはこれを一般的に行うための取り組みのようであり、時間が経つにつれ、この領域でより多くの人々が働くにつれて、いくつかのベストプラクティスが明らかになると確信しています。ただし、今日の時点で、同様の問題セットを見ている人にとっては、「自分でキャッシュする方法を理解する」は良い答えです。

3
Josh Koenig

Render Cache モジュールの使用を検討する必要があると思います。 Entity Cache と組み合わせて使用​​すると、プロジェクトページで説明されているように互いに補完し合うはずです。

0
Gokul N K