100分の100。つまり、100%。それが、私たちが追い求めているキャッシュ率です。キャッシュ率が高いということは、訪問者がWebサイトをリクエストしている場所に近いCloudflareデータセンターから、より多くのWebサイトのコンテンツが提供されていることを意味します。Cloudflareのキャッシュからコンテンツを提供することで、Web訪問者はより速くコンテンツをロードでき、Webサイト運営者はオリジンからのエグレス料金を削減できます。そしてコンテンツを確実に提供できるように、多層的な耐障害性と攻撃対策が提供されます。
本日は、Cache Reserveでキャッシングのメリットを大幅に拡大できたことを発表でき、嬉しく思います。Cache Reserveは、すべての静的コンテンツをCloudflareのグローバルキャッシュから_持続的に_配信する新方式です。お客様はCache Reserveによって、キャッシュヒット率の向上とエグレス料金の削減を実現できます。
なぜキャッシュ率100%を得ることは難しいのでしょうか?
Cloudflareは毎秒何千万ものリクエストをキャッシュから処理しており、これは、毎秒何テラバイトものキャッシュデータを世界中のWebサイト訪問者に配信していることに相当します。これだけの規模になると、最もリクエストの多いコンテンツを、最も人気のある領域に確実にキャッシュしておく必要があります。そうでなければ、遠方からのコンテンツ配信のためにWeb訪問者を長く待たせることになり、ネットワークが非効率的に稼働することになります。ある地域のキャッシュストレージが満杯になった場合、当社のネットワークはあまり人気のないコンテンツをデータセンターから退避させ、よりリクエストの多いコンテンツに置き換えることで、こうした非効率性をお客様に押し付けることを回避しています。
これは大半のユースケースでうまく機能しますが、どのお客様にも、ほとんどリクエストされないロングテールのコンテンツがあり、キャッシュから追い出されてしまう可能性があります。このように不人気なコンテンツが何度も追い出され、オリジンからの配信が必要になると、大きなコスト負担となるため、お客様にとって懸念材料となることがあります。このような懸念は、膨大なコンテンツライブラリを持つお客様にとっては、特に大きな問題となり得ます。では、この人気のないコンテンツをキャッシュに残して、オリジンからの退出を避け、お客様を守るにはどうしたらよいのでしょうか。
Cache Reserveは、お客様のコンテンツをこの人気投票から取り除き、特定のコンテンツが何ヶ月もリクエストされていなくても、Cloudflareのキャッシュから提供できるようにします。これにより、オリジンからコンテンツを引き出す必要がなくなり、お客様のエグレスコストを節約できます。Cache Reserveは、お客様がキャッシュ率100%に近づき、当社のグローバルCDNからすべてのコンテンツを永久に提供できるよう支援します。
なぜキャッシュを立ち退かせる必要があるのか?
キャッシュから提供されるほとんどのコンテンツは、オリジンサーバー(コンテンツがホストされているサーバー)から旅立ちます。Cloudflareのキャッシュに入るためには、オリジンから送信されたコンテンツが、一定の適格基準を満たす必要があります。これは、Webサイトに対する他のリクエスト(サイトを訪れる人に応じて変更されないコンテンツ)への応答に再利用可能なことを保証するためのものです。
コンテンツがキャッシュに入ることを認められた後、次に考えるべきことは、どれくらいの期間キャッシュに残すべきか、ということです。キャッシュ比率は、コンテンツへのリクエスト数を集計し、オリジンサーバーではなくキャッシュサーバーから応答された部分を特定して算出します。そのため、高いキャッシュ比率を実現するには、リクエストの多い領域にコンテンツを確実にキャッシュしておくことが最も重要です。
CDNの中には、お客様がより多くのお金を支払うことで、ある一定期間、特定の領域にコンテンツを確実にキャッシュすることができる有料モデルを採用しているものもあります。Cloudflareでは、キャッシュされる場所や時間に基づく課金は行っていません。つまり、お客様の支払い意思以外のシグナルを利用することで、適切なコンテンツを適切な時間、適切な領域にキャッシュする必要があるのです。
コンテンツの一部をどこにキャッシュするかは非常に簡単ですが(リクエストされた場所)、コンテンツをどれくらいの期間キャッシュしておくかは、大きく変化します。
cache-control、またはcdn-cache-controlといったヘッダーは、顧客がキャッシュから何か得ようと望む期間を決定するのに役立ちますが、CDNがヘッダーの他に考慮しなければならない要素は、より人気のあるアセットのストレージを最適化するために、コンテンツを早期に立ち退かせる必要があるかどうかということです。私たちは、「Least Recently Used(使用される頻度が最も低いもの)」またはLRUと呼ばれるアルゴリズムに基づいて、コンテンツを退避させています。これは、ストレージスペースがいっぱいになったとき、より人気のあるコンテンツのためのスペースを確保するために、最もリクエストの少ないコンテンツを最初にキャッシュから追い出すことが可能であることを意味します。
このキャッシング戦略では、いつリクエストが来たかという多くの情報を記録し、常にキャッシュを更新して、最も人気のあるコンテンツをキャッシュに残し、最も人気のないコンテンツを退場させるようにする必要があります。これは、私たちのCDNがサポートする幅広い顧客層にとってうまく機能し、公正なものです。
しかし、人気のサイクルに関係なくキャッシュから提供したいコンテンツの大規模なライブラリを持っている場合、LRUは、長期にわたってあまりリクエストされないアセットがオリジンから多く引き出されるため、オリジンのエグレスが追加されることになるかもしれません。
そこで登場したのがCache Reserveです。Cache Reserveは、人気度ベースのキャッシュの代替ではなく、それを補完するものです。すべてのキャッシュ可能なコンテンツをCache Reserveでバックアップすることで、お客様はもう不要なキャッシュの削除を心配する必要はありません。
Cache Reserve
Cache Reserveは、R2の上に実装される大規模で永続的なデータストアです。ダッシュボードでボタンを1つ押すと、お客様のWebサイトのキャッシュ可能なすべてのコンテンツがCache Reserveに書き込まれます。階層型キャッシュが訪問者とオリジンの間にキャッシュの階層を構築するのと同じように、Cache Reserveは、アセット用のストレージスペースを必要なだけ予約する究極の上位層キャッシュとして機能します。これにより、コンテンツが常にキャッシュから提供されるようになり、オリジンは不要なエグレス料金から保護され、応答パフォーマンスが向上します。
Cache Reserveの仕組みは?
Cache Reserveは、当社のエッジデータセンターとお客様のオリジンとの間に設置され、お客様のコンテンツがキャッシュに残る期間について保証されたSLAを提供します。
コンテンツがオリジンから引き出されると、クライアントに届いてリクエストが満たされるまで、Cache Reserveに書き込まれ、続いて上位層のデータセンター、下位層のデータセンターへと書き込まれます。同じコンテンツに対する次のリクエストでは、わざわざオリジンに戻ってレスポンスを返す必要はなく、より訪問者に近いキャッシュから提供することができます。アセット提供のパフォーマンスとコストの両方を、向上させることができるのです。コンテンツが下位層や上位層から追い出されると、Cache Reserveがそれをバックアップします。
Cache Reserveは、LRUに実装されているリクエストベースでの退避を無効にし、アセットが必要とされる限りキャッシュに残るようにします。Cache Reserveは、Cloudflareのネットワークがオリジンにキャッシュすべきコンテンツを問い合わせる回数を減らすと同時に、当社のデータセンターがお客様のオリジンに不足しているコンテンツを問い合わせるために開く必要のある接続とリクエストの回数を制限することで、階層型キャッシュの利点を拡張しています。Cache Reserveを階層型キャッシュで使用すると、同じコンテンツに対して下位層から同時に複数のキャッシュミスが発生した場合に、リクエスト数を減らすことができます。
例として、私たちのネットワークで今まで見たこともないような、example.comに対するコールドリクエストを想定してみましょう。クライアントのリクエストが最も近い下位層のデータセンターに入り、それが欠落していた場合、その下位層のデータセンターは上位層のデータセンターにマッピングされます。下位層が上位層にコンテンツを要求し、それも欠落していた場合、上位層はCache Reserveにコンテンツを要求します。つまりCache Reserveは、究極の上位層として、我々のネットワークに保存されていないコンテンツをオリジンに問い合わせることができる、唯一のデータセンターとなるのです。いったんCache Reserveに書き込まれると、オリジンはCloudflareのネットワークの他の部分にコンテンツを拡散する必要がないため、このコンテンツの配信に割くべきオリジンリソースを制限することができます。
コンテンツの更新が必要な場合、Cache Reserveはキャッシュコントロールヘッダーを尊重し、リクエストをパージします。つまり、Cloudflareがあなたのオリジンに戻ってコンテンツを再検証する前に、Cache Reserveで何か新しい状態が維持される時間を制御したい場合、それをcache-controlヘッダーとして設定すれば、早期にコンテンツが退避となるリスクなしにそれが尊重されるのです。また、その場でコンテンツを更新したい場合は、CloudflareのキャッシュとCache Reserveの両方で尊重されるパージリクエストを送信することができます。
Cache Reserveはどのように使用するのですか?
現在、Cache Reserveはクローズドベータ版であり、サインアップしたい場合は誰でも利用することができます。しかし今後数週間かけて徐々にお客様に展開し、エッジケースを迅速にトリアージして根本的な改善を行った後、どなたでも一般的に利用できるようにする予定です。
Cache Reserveのベータ版にサインアップするには。
ダッシュボードにあるCachingタイルにアクセスするだけです。
Cache Reserveページに移動し、サインアップボタンを押してください。
Cache Reserveプランは、R2の低コストを模倣したものです。ストレージは1GBあたり月額0.015ドル、オペレーションは100万回読み込みあたり0.36ドル、100万回書き込みあたり4.50ドルとなる予定です。価格の詳細については、R2ページを参照し、概要をご覧ください(Cache Reserveの価格ページは近日公開予定です)。
ぜひお試しください!
Cache Reserveは、キャッシュヒット率を向上させ、訪問者の体験をスピードアップさせながら、あらゆるWebサイト運営の経済性を改善できる、非常に大きな可能性を秘めています。Cache Reserveの利用を開始できることを大変嬉しく思います。ベータ版をご覧いただき、ぜひご感想をお聞かせください。