IT-Q

キャッシュを入れる判断基準として妥当なのはどれですか。

更新が少なく、参照が多く、多少古くても困らないものに入れます。難しいのは入れる側ではなく捨てる側です。TTL で自動失効させるのが最も安全で、事故が起きにくくなります。

面接官が見ているのは場当たりにキャッシュしない感覚があるか。

よくある答えと、面談でどう見られるか

  • 更新頻度が低く、参照が多く、多少古くても許容できるもの
    その通りです。逆に常に最新であるべきものには入れません。
  • 表示が遅いページはとりあえず全部
    まず何が遅いかを特定してからです。
  • ユーザーごとに違うデータほど効果が高い
    逆です。ユーザーごとに違うとキャッシュが共有されず効果が薄い上、 キーを間違えると他人のデータが見える事故になります。
  • 書き込みが多いテーブルほど効果が高い
    破棄が頻繁になり、効果が出ません。

模範解答

「更新が少なく・参照が多く・多少古くても困らない」ものに入れます。マスタデータや、集計に時間がかかるが即時性が要らない数値などです。

入れるより捨てる方が難しい点に注意してください。TTL で自動失効させるのが一番安全で、即時反映が必要なものだけ更新時に Cache::forget() を呼びます。更新経路が複数あると破棄漏れが起きます。