119. Cache Control(履歴におけるキャッシュの扱い:記憶を「新しく」保つための管理)
原理:記憶を信じるか、今を信じるか
戻った先のページが「古い」のは困る
HTMXの履歴復元(114.)が非常に速いのは、ブラウザ内に保存された「画面のコピー(キャッシュ)」をそのまま使っているからです。 しかし、これには一つのリスクがあります。 「銀行の残高画面を履歴保存したあと、お金を引き出した。そこで戻るボタンを押したら……古い(引き出し前の)残高が表示されてしまった!」
「キャッシュ制御(Cache Control)」とは、「履歴に保存された画面(記憶)をどれくらい信じていいか、あるいはいつ最新の情報へ上書きすべきか」を管理するための技術です。
実践:鮮度の高いナビゲーションの実現
1. サーバーから「保存するな」と命じる
ブラウザに対して「このHTMLは履歴キャッシュ(戻るボタン用)に使っちゃダメだよ」と伝える方法です。
2. HTMXの設定でキャッシュを制限する
HTMX全体の挙動として、履歴への保存件数を制限したり、特定のページでのみ有効にしたりする設定もあります。
3. ブラウザのキャッシュとHTMXの履歴キャッシュの違い
- ブラウザキャッシュ: 画像やCSSファイルを保存する。サイトを速くするため。
- HTMX履歴キャッシュ: 「あの時のHTML画面」を丸ごと保存する。戻るボタンのため。 ※ ここでは主に後者、つまり「戻った時の見た目」の鮮度をコントロールします。
4. ステップ・バイ・ステップ解説
- 「生もの(なまもの)」データを探す: 株価、残高、通知数など、1分1秒を争う最新情報が表示されているページを見つけます。
- ヘッダーの設定: サーバー側のプログラム(PHP, Python, JSなど)で、キャッシュを禁止するヘッダーを出すように設定します。
- 確認: 移動して、戻った時に「一瞬古い画面が出る」のではなく「最新のデータを読みに行く(チラッとインジケーターが出る)」ようになるか確認します。
比較:高速な復元 vs 最新の復元
高速な復元(デフォルト)
- メリット: 一瞬で戻る。通信不要。ネットが切れていても戻れる。
- デメリット: 情報が古い可能性がある。
最新の復元(キャッシュなし)
- メリット: 常に正しい(最新の)データが見える。
- デメリット: 戻るたびに通信が発生し、わずかな待ち時間が生じる。
まとめ:初心者のための「鮮度管理」
キャッシュ制御は、あなたのアプリに対する「信頼性」を守るための裏方仕事です。
- 静的なページはキャッシュを活かす: ブログの記事や会社概要など、めったに変わらないページはHTMXのデフォルトのままでOKです。そのほうが圧倒的に速く感じられます。
- 動的なページは厳しく: お金、ユーザー設定、買い物カゴ……。間違いが許されない場所では、キャッシュをOFFにする勇気を持ちましょう。
- ハイブリッドな考え方: 「まずキャッシュでパッと画面を出し、その直後に裏で最新情報を取ってきて更新する(SWRパターン)」という高度な手法もあります。
今の自分と、過去の記憶。キャッシュ制御という精密な調整を通じて、常に正しく、かつ心地よく動く、非の打ち所がない Web アプリを実現してください。次の記事では、戻るたびに正しく名前を変える「タイトル管理(120. Title Management)」をご紹介します。