以前に表示したWebページに戻ってきたり、関連するWebページには同じリソースが埋め込まれていることがよくある。例えば、サイト内のナビゲーションに使われてる画像や共通のスタイル・シート、スクリプトなどである。ブラウザはすでにコピーを持っているため、表示のたびにこれらのリソースをすべて取得するのは無駄が多い。
取得したページをその後の利用のために蓄えておくことはキャッシング(caching)と呼ばれる。
キャッシングの問題
HTTPキャシシングの難しい問題は、キャッシュしたページのコピーが、再度取得した時のページと同じであることをどのように判断するかということである。この判断はURLだけではできない。
問題解決の手法
有効期限と日時で判断する
ページの検証(ステップ2)である。キャッシュが参照され、要求されたURLのページのコピーが新鮮である。(まだ有効である)ことがわかっている場合は、サーバーから新たに取得する必要はない。代わりにキャッシュされたページを直接返すことができる。キャッシュされたページを最初に取得したときに返されたExpiresヘッダーと、現在の日時がこの判断をするのに用いられる。
ただし、すべてのページに、ページを再度取得する必要があるかを教えてくれる便利なExpiresヘッダーがついてるわけではない。結局のところ、特に将来について予測することは難しいということである。
あるページのキャッシュ可能性は時間の経過とともに大きく変化する可能性がある。
サーバーは、いつページが更新されるかわからないため、Expiresヘッダーを保守的に用いらざるを得ない。
条件付きGETで有効であるかを確認
キャッシュされたコピーがまだ有効であるかどうかをサーバーに問い合わせることである。その要求は条件付きGET(conditional GET)であり、図7-28のステップに示されている。サーバーはキャッシュされたコピーがまだ有効であることがわかると、それを知らせる短い応答を返す(ステップ4a)。そうでない場合は、完全な応答を送信する必要がある。