リソースを大量に消費するフォーマット表示機能を持つカスタムフィールド/ウィジェットがあります。現在、フィールドの_hook_field_formatter_view
_関数内でcache_set()/cache_get()
を使用して結果をキャッシュしています。
これを行うことができるより良い方法はありますか? drupal_render()
の_#cache
_プロパティを使用しようとすると、出力がキャッシュされましたが、それでも_hook_field_formatter_view
_関数を実行しました。
基本的に、(匿名ユーザーの)全ページキャッシュを行う方法は知っていますが、(すべての人の)フィールド/ノード/エンティティをどのようにキャッシュしますか?
現在、私のフィールドのhook_field_formatter_view関数内でcache_set()/ cache_get()を使用して結果をキャッシュしています
正直なところ、これはそれを実行するための悪い方法ではありません。リソースを大量に消費するカスタムロジックがある場合は、通常、独自のキャッシュの決定に責任を持つことが適切です。正直なところ、もっと多くの開発者がcache_get/set()に慣れてほしいと思います。
Entitycacheはこれを一般的に行うための取り組みのようであり、時間が経つにつれ、この領域でより多くの人々が働くにつれて、いくつかのベストプラクティスが明らかになると確信しています。ただし、今日の時点で、同様の問題セットを見ている人にとっては、「自分でキャッシュする方法を理解する」は良い答えです。
Render Cache モジュールの使用を検討する必要があると思います。 Entity Cache と組み合わせて使用すると、プロジェクトページで説明されているように互いに補完し合うはずです。