cache-control ヘッダー

ブラウザのキャッシュ制御について。

HTTP 1.1 においては、ブラウザのキャッシュ制御は Cache-Control ヘッダによって行われます。
その中に、

no-cache

という記述があることがあります。
その意味とは・・・

no-cacheなのだから、「キャッシュさせない」という認識をしている人も多いかと思いますが、じつは「キャッシュをさせる」なのです。

どういうことかというと、

サーバーのタイムスタンプをみて、ブラウザのキャッシュのタイムスタンプと比較し、一致していない場合=ブラウザのキャッシュでは表示する画像が正しくない場合にサーバーに問い合わせを行い取得しに行く

という意味なのです。タイムスタンプの比較をするために逐一通信は行われているのですが、それは微々たるものです。 例えば、1MBの画像があった場合、「全くキャッシュさせない」ということだと毎回毎回サーバーに1MBの画像を取得しに行くことになります。これはかなりの通信量であり表示遅延の原因にもなります。しかし、サーバー側とブラウザ側のタイムスタンプが同じ場合はわざわざ1MBを毎回取得するという手間が発生せず、都度通信はサーバーとブラウザの差異の確認ということのみになるため効率的ですよね。

また、Cache-Control ヘッダには「expires」というものもありますが、こちらは強制的に指定した期間はキャッシュを保持させるというヘッダーになります。

例えば。
Expires “Fri, 2 Feb 2018 05:00:00 GMT”なら、 2018年2月2日(金)の5:00まで強制的にキャッシュ保持ですし、

よく見る  
max-age キャッシュの有効期限を設定する(秒数)
と似たような感じです。 max-age 360 のように。

Leave a Reply

Your email address will not be published. Required fields are marked *