Akamai Diversity
Home > Web Performance > アカマイのコンテンツキャッシュ優先順位

アカマイのコンテンツキャッシュ優先順位

どのコンテンツをキャッシュすべきかという記事はいくつかあるのですが、そもそもコンテンツキャッシュするためにどのような選択肢があるのかを記載します。W3C の仕様では Cach-Control ヘッダーと Expires ヘッダーの定義があり、これらのヘッダーを利用してブラウザやプロキシサーバのキャッシュを制御するのが一般的です。アカマイのような CDN (Content Delivery Network) を使う場合は、CDN でキャッシュするロジックが入るため、オリジンサーバが HTTP レスポンスで返す上記2つのヘッダーだけでなく、CDN 自身が持っている管理機構を使うことが可能です。

アカマイには Luna Control Center というポータル画面があります。我々は Luna と呼んでいます。Luna は設定だけでなく、管理するための様々な情報をリアルタイムで見ることができます。Luna にはプロパティ・マネジャーと呼ぶ管理ユーザインタフェースがあり、キャッシュを含む各種設定を行います。キャッシュに関しては様々な選択肢があります。

PropertyManager_Cache_selection.png

キャッシュオプションで、"オリジンの〜"で始まる選択肢以外は全て Luna の設定が優先されます。"キャッシュ" と "保管しない" が多く使用されますが、これらが選択された場合、オリジンが返すCache-Control と Expires ヘッダーはアカマイのキャッシュ設定では無視されます。皆様自身が実装するセルフ・インテグレーションの場合はこの点を注意ください。アカマイのエンジニアが設定したり、ガイドして導入する場合は、キャッシュの設定をアカマイかオリジンのどちらを優先するかは適切にお伝えさせていただいております。アカマイは複数のオリジンでも対応できますので、個々のアプリケーションの設定を気にすることがない、Luna 上の設定を優先することをオススメしています。

保管しない (no store)
オリジンからコンテンツを提供し、キャッシュしません。個人情報などが含まれる HTML コンテンツなどはこの設定にすべきです。この設定をする場合、ブラウザ側にもキャッシュしないようヘッダーが送付されます。

PropertyManager_Cache_nostore.png

ログインが必要なサイトの基本は "保管しない (no store)" をデフォルト設定にし、その後 jpg, png, gif などの拡張子を後述する "キャッシュ (Cache)" として設定することです。

キャッシュ (Cache)
コンテンツをキャッシュします。キャッシュの保持期間を選択できます。キャッシュの期限が切れるとアカマイはオリジンに最新のコンテンツを取りにいきます。もしオリジンが反応無い場合でもすでにキャッシュがあれば古いコンテンツを返すことも可能です。その場合、「古いオブジェクトの再検証を強制 (Force Revalidation of Stale Objects)」の選択肢を「検証できない場合古いオブジェクトとして提供 (Serve stale if unable to validate)」を選択します。

PropertyManager_Cache_cache.png

オリジンのキャッシュコントロールと有効期限を使用 (Honor Origin Cache Control and Expires)
オリジンからの Cache-Control と Expires ヘッダーを優先して、その値を使ってアカマイはキャッシュします。オリジンサーバ側で細かく制御したい場合はこの設定を推奨します。パスや拡張子、その組み合わせに応じて、キャッシュ設定は可能ですので、他は全てアカマイで制御し、特定のパスだけをオリジン設定を優先するといったことも可能です。

PropertyManager_Cache_honor_origin.png

キャッシュをバイバス (Bypass Cache)
オリジンからコンテンツを提供するけれども、キャッシュは削除しません。ほぼ no-store と同様な動きになりますので、キャッシュしない場合は no-store を選択すれば良いと思います。マッチ条件と組み合わせれば、ログインしていないユーザーには共通のキャッシュコンテンツを返し、ログインしているユーザにはバイパスキャッシュで既存のキャッシュを消さずに個別のコンテンツを返すというケースが実現できます。
PropertyManager_Cache_Bypass.png


また、先日 PAPI (Property Manager API) が GA (General Availability) になりました。API としてプロパティ・マネージャーの設定が制御できますので、是非参考にしてください。

キャッシュに関しては他にもおもしろい記事がありますので以下にご紹介します。

Leave a comment