Akamai Diversity
Home > Web Performance > Akamaiのキャッシュ/ブラウザのキャッシュ

Akamaiのキャッシュ/ブラウザのキャッシュ

以前にもアカマイのコンテンツキャッシュについてこのブログで紹介していますが、サイトの高速化やオリジンサーバリソースの節約(オフロード)といった対策を行う上で、キャッシュを制御することは非常に重要です。
ただ、コンテンツがキャッシュされる場所はアカマイのサーバだけではありません。アカマイに加えて他のキャッシュを制御することも重要になります。
今回はアカマイのキャッシュとブラウザのキャッシュの制御方法について解説します。

コンテンツのキャッシュ場所

Webシステムにおいて、アカマイのサーバ以外にも、複数の場所でコンテンツをキャッシュすることが出来ます。
コンテンツがキャッシュされる場所
  • エンドユーザマシン上のWebブラウザ
  • エンドユーザとアカマイサーバ間にあるProxyサーバ
  • アカマイのサーバ
  • Webサーバの後ろにあるアプリケーションサーバ
cacheplace.png
今回は特にブラウザのキャッシュに注目して、アカマイのキャッシュの動きと組み合わせて、どのように動作するのか、説明致します。

キャッシュの設定

アカマイは、パスや拡張子などをキーに保存するキャッシュのTTL(Time To Live: 生存期間)を各アカマイサーバ上に設定できます。
オリジンサーバは、下に示すようにHTTPレスポンスヘッダを用いてWebブラウザのキャッシュを設定することができます。

HTTP/1.1 200 OK
 :
Cache-Control: public, max-age=1209742
Expires: Mon, 16 Sep 2013 08:53:46 GMT
Last-Modified: Mon, 16 Sep 2013 08:53:46 GMT


つまり、アカマイ化されたWebシステムでは、同じコンテンツに対して、アカマイサーバ上でのキャッシュとオリジンサーバからのHTTPレスポンスヘッダによるブラウザキャッシュを設定できることになります。

では、同じコンテンツ(例えば、A.jpg)に対して、アカマイでTTL:48時間、オリジンサーバでTTL:24時間、と設定された場合、エンドユーザではどのTTLが有効となるでしょうか?


アカマイ化されたWebシステムにおけるデフォルトのキャッシュ動作

アカマイは、デフォルトで、オリジンからのレスポンスにCache-Control、Expiresヘッダが付いている(ブラウザキャッシュの指定がある)場合のみ、そのヘッダを以下のルールで更新してエンドユーザへ送信します。
  • アカマイのTTLの残り時間と、オリジンからのレスポンスヘッダの時間の、短い方を採用
  • アカマイでno-store, bypass-cacheと設定されている場合は、Cache-Control: no-store(ブラウザキャッシュなし)を設定し、max-ageは無視
つまり、常に短いほうの値が有効になります。
ttl_table.png

オプション設定にによりフレキシブルなキャッシュ動作指定が可能

ただし、Akamaiの設定にて、
  • レスポンスヘッダの値を優先
  • 特定のコンテンツのみ特定のmax-ageを指定する
等の、フレキシブルな設定も可能です。

これにより、ブラウザーのキャッシュを、アカマイのキャッシュと連携して使用したり、全く別のキャッシュとして扱うこともできます。

アカマイ化の際には、
キャッシュ設定において、どのコンテンツをアカマイでキャッシュするか、オリジンサーバのCache-controlヘッダによるキャッシュ設定をどう組み合わせるか、
を検討していくことでより効果的なコンテンツ配信やオリジンサーバオフロードを実現することができます。



Leave a comment