日記
スクリプトの更新によってキャッシュを破棄する仕組み (13:51)Edit

>>最近はとにかくキャッシュが嫌いなのだ。 tDiary でほとんど唯一気に食わないのもキャッシュだし。家のメインマシンの CPU は P4 2.4GHz なわけで、キャッシュなんかなくても高速に動くのだ。それにも関らず必ずキャッシュしてくれちゃうもので、 tdiary.conf を編集するたびに rm -rf cache/tdiary するのがうざくてたまんない。キャッシュは嫌だ。キャッシュは悪だ。世界の敵だ。ブギーポップが出現しちゃうくらいダメだ。

自作フレームワーク(PHP)ではキャッシュ使いまくりなんだけど、

  • 実行されるスクリプトファイル(requireされるものも含む)の更新日時
  • データおよび設定ファイルの更新日時
  • DBからselectした行の更新日時

の中の一番新しい日時と、使用するキャッシュファイルの更新日時を比較して、キャッシュファイルの方が古かったら自動的にキャッシュを破棄できるようにしている。

あと、データ編集系の処理を行うときには、その編集処理によって古くなるキャッシュをまとめて簡単に削除できる仕組みも用意して、腐ったキャッシュファイルをできる限り自動的に削除できるようにする、なんて感じの一般的なキャッシュ管理の仕組みも併用。

ってのは要は、「キャッシュごとに依存するファイルを登録しておき、依存ファイルの更新日時とキャッシュファイルの更新日時を比較して、キャッシュをコントロールする」という仕組みの応用なんだけど、データレベルの操作に加えて、スクリプトファイル自体の更新もデータの更新と同列に扱っておくのがポイント。

そんな感じにしておくと、キャッシュを使う際に付随する面倒くささが大幅に減少して結構いい感じ。

Published At2004-01-17 00:00Updated At2004-01-17 00:00