Posted by gg45 on July 24, 2015 at 2:01am
いつもお世話になります。
現在独自でモジュールを制作していて
nodeのフィールドをupdateするため、db_updateでupdate処理をしているのですが
データ自体の更新はできたのですが、キャッシュクリアをしないと、表示で反映されない状態になっております。
そのため、drupal_flush_all_cachesで処理のたびにキャッシュクリアをしているのですが
キャッシュのクリアに時間がかかってしまうのがネックとなっております。
なるべく処理の時間を短くしたいのですが、何か良い方法はありますでしょうか。
また、cache_clear_allという関数も発見したのですが、こちらはdrupal_flush_all_cachesとは何が違うのでしょうか。
お手数をおかけいたしますが、ご助言いただけますと助かります。
よろしくお願いします。
Comments
DrupalDefaultEntityController::resetCache を使いましょう
DrupalDefaultEntityController::resetCache [1] を使うと、
IDを指定して特定のエンティティ(ノード)のキャッシュだけをクリアできるので、
クリア時間の短縮が可能です。
このAPIは、Webからノードを保存した時に実行される node_save でも呼び出されています。
使い方は module/node/node.module:L1190 辺りを参考にしてください。
ざっと見た感じ、前者はページやブロックのキャッシュだけをクリアし、
後者はcssやjs、テーマのキャッシュなどもクリアするようです。
ちなみに、drupal_flush_all_caches 中で cache_clear_all も実行されます。
ご連絡ありがとうございます! こちら利用したら大分早くなり
ご連絡ありがとうございます!
こちら利用したら大分早くなりました!
本当にありがとうございました!