CDN(Content Delivery Network)を使っている方であれば、「キャッシュヒット率」という言葉を耳にしたことがあるかと思います。CDNを効果的に使うにはこのキャッシュヒット率を上げる必要があります。今回は、普段何気なく使っているキャッシュヒット率について、基礎から解説していきます。
キャッシュヒット率とは
まずキャッシュヒット率の定義について説明したいと思います。キャッシュヒット率とは、キャッシュサーバーがオリジンサーバーに代わってコンテンツ配信を行った割合を表します。キャッシュヒット率はCDNを効率的に利用できているか否かを測る指標のひとつとなります。
キャッシュヒットすることで、オリジンサーバーに比べ、よりクライアントの近くにあるキャッシュサーバーからコンテンツを配信することができます。それにより、ユーザーの通信速度、ユーザーエクスペリエンスを向上させることができます。また、コンテンツ事業者にとっては、オリジンサーバーの負荷を減らし、急に増加するトラフィックに対しても設備投資を最小化できます。
キャッシュヒット率は、以下の計算式で求めることができます。
キャッシュヒットの対義 キャッシュミスとは?
上記のように、キャッシュヒット率を算出する際には、キャッシュヒット数とキャッシュミス数が必要となります。ここでいうキャッシュミスは、キャッシュヒットの対義語になり、キャッシュサーバーではなくオリジンサーバーから配信されたものになります。
一般的な静的なウェブサイトの場合、html、CSS、JavaScript、ロゴ、ファビコン、写真、イラストなどの画像データを含め約80~120オブジェクトで構成されています。Cache-controlヘッダーにより、キャッシュさせないオブジェクトを除けば、1回目のリクエストでオリジンサーバーから配信される際に、途中経路にあるキャッシュサーバーにオブジェクトはキャッシュされ、2回目以降からキャッシュサーバーから配信される仕組みです。
キャッシュミスは主に以下の3パターンにより発生します。
- 初回アクセスによりキャッシュサーバーにオブジェクトが格納されていない
- cache-control ヘッダーで、max-age=0 などキャッシュ非対象のオブジェクトとされている
- キャッシュの保持期間を過ぎた
典型的な静的ウェブサイトの場合、キャッシュヒット率は95~99%程度になります。もっとも、多くのウェブサイトにおいては、静的コンテンツ以外にも動的コンテンツが用いられているため、ここで挙げた範囲よりも実際のキャッシュ率はより低くなるケースが少なくありません。キャッシュヒット率を算出する場合には、この点をしっかりと頭に入れておく必要があります。
キャッシュヒット率を向上させるには
キャッシュヒット率を高めれば、よりユーザーにとっては高速な通信が可能になり、ユーザーエクスペリエンスを向上させることができます。そのためには、キャッシュミスを少なくすることが必要になってきます。
キャッシュミスをなくすためには、キャッシュの保持期間を長く設定するなどの対応が必要になります。もう一つ重要な要素は動的コンテンツのキャッシュです。静的コンテンツではほとんど差がつかないですが、動的コンテンツをキャッシュできればキャッシュヒット率は格段に向上します。動的コンテンツのキャッシュについては下記の記事もご覧ください。
まとめ
以上のようにキャッシュヒット率は、CDN利用時においてキャッシュからクライアントへどの程度配信されたかを示す指標になります。この効果とメリットをきちんと理解した上で、効果的に数値を向上させる方法を実践できるようになれば、CDNをより効果的なものにすることができるでしょう。