キャッシュ設計
キャッシュする量が十分小さく、内容が変化しないことが分かっているなら、ただのマップ(連想記憶、メモリ Key-Value-Store)でよいかもしれない。
変化するデータの場合、基本的には一定時間キャッシュするようにして古くなったら捨てる。
データの変化する頻度でキャッシュの保存期間を決める。
変化しないデータの場合でも、利用実績がない(あるいは低頻度の)古いデータは捨てるのが望ましい。
使わないデータでメモリやストレージが埋まるのは望ましくない。
時には明示的にキャッシュをクリアする仕組みが必要かもしれない。
ユーザーの意思によるもの
元データの更新によるもの
キャッシュが大量の新しいデータで洗い流されてしまわないように、一時キャッシュと長期キャッシュの二段構えにする。
一時キャッシュは仮置きで、再参照されたら長期キャッシュに保存する。
一時キャッシュは、大量データを取り扱う場合、少なくとも1回の更新分のキャッシュを用意する。そうしないと洗い流されてしまう。
取り扱うデータ量に注意。
可能な限り本番に近い環境でパフォーマンス測定をする。キャッシュヒット率ミス率、メモリ使用量、実行時間などをちゃんと計測する。
キャッシュで本当に効果があったのかどうかを確認する。実装しただけで自己満足にならないようにする。
キャッシュのOn/Offを現場で簡単に切り替えれられるようにするのが望ましい。
キャッシュの統計をログなどに残すようにする。
単純なベンチマークではキャッシュの真の実力を測ることはできない。真の実力は現場でしかわからない。