Akamai Diversity
Home > Web Performance > キャッシュ効率の上げ方 その2

キャッシュ効率の上げ方 その2

可能な限り多くのコンテンツを可能な限り長い期間キャッシュする、ということが、アカマイのキャッシュ効率を上げるために重要なポイントです。

今回は、アカマイのキャッシュ効率を上げるための主な方法を紹介します。

Webサイトに合ったキャッシュ TTL 設計

まず最初に、自分のWebサイトの構成と、各コンテンツの更新運用をよく確認し、キャッシュしても問題無いコンテンツがどれかを調べます。
それをもとに、可能な限りたくさんの URLを、長期間キャッシュさせることができるように、アカマイ側のキャッシュ TTL を設計することが必要です。
参考: キャッシュ効率の上げ方 その1

アカマイのキャッシュは、キャッシュ削除機能によって削除する事ができます。
あらかじめキャッシュTTLをかなり長めに設定しておいて、コンテンツを更新した時にキャッシュ削除を行うことで、オリジンサーバへのアクセス頻度を最小限にとどめ、キャッシュ効率を上げることができます。

動的コンテンツのキャッシュ

前回、動的コンテンツであってもURL で一意のコンテンツであればキャッシュできると説明しました。URLで一意のコンテンツを返さないような動的コンテンツについても、キャッシュする方法があります。

  • キャッシュキーのカスタマイズ
    アカマイ側でキャッシュキーをカスタマイズすることにより、リクエストごとに異なるコンテンツをキャッシュしたり、異なるURLで同一のコンテンツを返す場合にキャッシュを共通化したりして、キャッシュ効率を上げることができます。

  1. リクエストヘッダおよび Cookie
    特定パスに対して、リクエストヘッダのヘッダ名やヘッダ値をキャッシュキーに含める、あるいは特定の値のときにキャッシュキーに含める、等のカスタマイズが可能です。
    同様に、リクエストのCookie 名やCookie の値に従ってキャッシュキーをカスタマイズすることも可能です。

    例) ブラウザの優先言語(Accept-Language)ごとに異なるコンテンツをキャッシュ
    例) 特定のCookieの値ごとに異なるコンテンツをキャッシュ

  2. Query String 
    特定パスに対して、Query String をキャッシュキーに含めない、あるいはQuery Stringの一部をキャッシュキーに含めない、あるいは条件に指定した値のときにのみキャッシュキーに含める、等のカスタマイズが可能です。

    例)  以下のURLが同一コンテンツを返す場合、これらのキャッシュを共通化
    http://www.example.com/top.html?category=book&userid=029359e38d
    http://www.example.com/top.html?category=book&userid=73790359g9

  3. その他
    URL の中の特定のパス要素のみをキャッシュキーに含めたり、特定のパスのみをキャッシュキーから除外することで、複数URLに共通のキャッシュキーを割り当て て、キャッシュ効率を上げることができます。複数の 異なるパスが同一のコンテンツを返しているような場合には便利です。
    また、リクエストユーザの地理的なロケーション(国など)に応じて、異なるキャッシュキーを設定することもできます。

  • EdgeSide Include
    EdgeSide Include  (ESI) は、XMLベースのマークアップ言語で記述したタグに従って、アカマイサーバ側で動的にコンテンツを組み立てることができる機能です。
    ESI のタグをあらかじめオリジン側のWebページに埋め込んでおくことで、動的ページを、「ユーザ毎にパーソナライズされた部分」と「全ユーザ共通部分」とに分割して、動的ページの共通部分のみをキャッシュさせることができます。
    ESIを利用するためには、Webアプリケーション側の改修が必要になりますが、本来キャッシュできないタイプのページもキャッシュ対象とすることができるので、キャッシュ効率を上げるためには効果的です。


キャッシュサーバの階層化(Tiered Distribution)

キャッシュ効率化のためのオプションとして、キャッシュサーバを階層化することでアカマイサーバ間でキャッシュを共有できる Tiered Distribution という機能があります。
Tiered Distribution 構成では、アカマイサーバ (Edge) とオリジンサーバとの間に、親のアカマイサーバを配置して、キャッシュサーバを多段化します。
Edgeサーバが必ず親サーバ経由でオリジンサーバにアクセスすることで、 同じ親サーバを共有する Edgeサーバ間でキャッシュが共有され、キャッシュ効率が高まります。

caching04-td.png

以上、アカマイのキャッシュ効率を高めるための代表的な方法をご紹介しました。
より効果的なキャッシュ設定を行うためには、Webサイトがどの条件で共通のコンテンツを返すかを知っておく必要があるということですね。



Leave a comment