キャッシュ
キャッシュ は、高価な問いへの答えを保存しておき、二度と尋ねなくて済むようにします。トップページが訪問者ごとに同じ重いクエリを実行しているなら、結果をRedisに60秒キャッシュして、瞬時に配信しましょう。
キャッシュはパフォーマンスの最適化であって、信頼できる情報源ではありません。初心者の典型的な罠は、キャッシュの無効化 (cache invalidation) を忘れることです — キャッシュされたコピーが古くなり、ユーザーが古いデータを見ます。経験則: 本物のボトルネックを計測したときだけキャッシュし、そしてキャッシュされた値がいつ期限切れになる、あるいは更新されるかの明確なルールを常に持ちましょう。
きれいな戦略は2つあり、この2つを取り違えることがほとんどのキャッシュバグを生みます。時間ベースの失効 (TTL) は「この値は60秒間有効、その後は捨てる」と言います — シンプルで、少し古いデータが無害なとき (閲覧数、トップページのフィード) には十分です。イベントベースの無効化 は「元データが変わった瞬間にキャッシュ値を削除する」と言います — 正確ですが、それを すべての 書き込みパスで覚えておかねばならず、まさにそこで人は滑ります。迷ったら短いTTLを選びましょう: せいぜい1分古い値は、無効化を1つ忘れて永遠に古いままの値より、小さなバグです。