1年前、私たちはCloudflareのキャッシュ設定をカスタマイズする新しい方法であるCache Rulesを導入しました。Cache Rulesは、コンテンツキャッシュ方法の柔軟性を高めると共に、正確な制御、使いやすいAPI、シームレスなTerraform統合を提供します。2022年9月下旬にリリースされて以来、10万を超えるWebサイトがCache Rulesを使用して、キャッシュ設定を細かく調整しています。
抜粋:本日、Cache Rulesと他のいくつかのRules製品の同時**一般公開(GA)**をお知らせできることを嬉しく思います。しかし、それだけではありません。Cache Rulesの新しい設定オプションも追加され、Cloudflareでのキャッシュ方法のカスタマイズオプションも増設されました。これには、Cache Reserveの対象とするリソース、配信元サーバからデータを受信する際に尊重すべきタイムアウト値、コンテンツのキャッシュ時に使用するカスタムポート、cache-controlヘッダーがない場合にCloudflareのキャッシュをバイパスするかどうかを定義する機能が含まれます。
Cache Rulesは、コードを記述することなく、ほとんどすべてのユースケースに合わせてコンテンツ配信戦略を調整することができます。Cache Rulesが一般公開されたことで、お客様が完璧なキャッシュ戦略を迅速に実現できることを、とても楽しみにしています。
Cloudflareのキャッシュカスタマイズの歴史
Cloudflareにおけるキャッシュカスタマイズの旅は、10年以上前、会社の設立当初から始まりました。当初から、お客様からの最も頻繁に寄せられた要望の1つは、設定の簡素化でした。お客様は、正確なキャッシュポリシーの実装、強固なセキュリティ対策の適用、ヘッダーの操作、リダイレクトの設定など、Webサイト上のあらゆるページに対して簡単に行いたいと要望されていました。Cloudflareを使用してこれらの制御を設定することは、複雑な設定オプションを使用してレスポンスにヘッダやポリシーを追加し、後でCDNによって下流に適用する機能しか提供していない配信元サーバーを利用しているお客様にとって特に重要でした。
このような需要に応えるため「Page Rules」を発表し、以来、人気・機能性ともに著しい成長を遂げています。Page Rulesは、Cloudflareがコンテンツをキャッシュする方法をきめ細かく制御したいお客様に好まれる選択肢として成長しました。現在、500万以上のアクティブなキャッシュを制御するPage Rulesが存在し、Webサイトのコンテンツ配信戦略を支援しています。
しかし、その裏でPage Rulesはスケーラビリティの問題を抱えていました。
CloudflareがPage Ruleを検出すると、お客様のすべてのルール条件を1つの正規表現パターンに変換する必要があります。このパターンをWebサイトへのリクエストに適用することで、目的のキャッシュ構成を実現します。すべてのPage Rulesを使用するお客様の変換されたすべての正規表現が、世界中の300以上のデータセンターにまたがる毎秒数千万のリクエストが比較されることを考えると、Page Rulesを適用するための計算要求がいかに膨大になるか容易に想像できるでしょう。このプレッシャーは、ユーザーに提供可能なルールの数に直結します。例えば、Page Rulesでは、特定のWebサイトに展開できるルール数は125個までとなっています。
この課題に対処するため、私たちは新しいルールセットエンジン上にすべてのPage Rule機能を再構築しました。ルールセットエンジンベースの製品は、ユーザーが設定できるルール数を増やすだけでなく、これらのルールを実行するタイミングについても高い柔軟性を提供します。ルールセットエンジンの特筆すべき点の一つは、ページのすべてのルールを単一の正規表現にまとめるのではなく、ルールロジックを条件ベースで評価できることです。例えば、サブドメイン「A」と「B」に異なるキャッシュポリシーがある場合、サブドメイン「A」からのリクエストは「A」に固有の正規表現ロジックを使って評価されます(「B」に適用されるロジックは省略されます)。これにより、パフォーマンスに有意な利点がもたらされ、Cloudflareのネットワーク全体にPage Rulesを適用するための計算負荷が軽減されます。
この1年間、Cache Rulesは、オリジンルール、構成ルール、単一リダイレクトルールとともにベータ版として提供されてきました。アーリーアダプターらの貴重なサポートのおかげで、私たちは製品の微調整に成功し、ベータ版からGA(一般公開)に移行する準備ができました。これらの製品は、Page Rulesの能力のすべて、そしてそれ以上のことを実現できるようになりました。これは、Page RulesのEOLプロセスの始まりでもあります。今後数か月以内に、お客様がPage Rulesを特定のルール製品に置き換える方法に関するタイムラインと情報を発表する予定です。これを可能な限り自動化し、すべての人がPage Rulesからスムーズに移行できるようにするための簡単な手順を提供します。
Cache Rulesの使用方法と新機能
Cache Rulesは直感的で、当社の他のルールセットエンジン製品と同様に機能します。URLやリクエストヘッダーなどをユーザー定義の基準で評価し、指定された値に一致する場合、Cloudflareのキャッシング設定に従います。各Cache Ruleはフィールド、演算子、値に依存します。利用可能なすべてのオプションについては、Cache Rulesのドキュメントを照してください。
以下に、キャッシュをカスタマイズするためのさまざまな戦略を展開する方法の例を2つ示します。これらの例は、Cache Rulesの機能のほんの一端にすぎません。実際にお試しいただき、ご意見をお聞かせください。
例:キャッシュされたコンテンツの定期的な更新
例として、Acme社がキャッシュ戦略を更新する場合を考えます。特定のリクエストヘッダーを利用するようにキャッシュをカスタマイズし、そのリクエストヘッダーの有無に応じてそのキャッシュルール適用の可否が判断されるようにしたいと考えています。最初に決める必要があるのは、特定のルールをトリガーするために使われる情報です。これは数式で定義します。
トリガーの基準を定義したら、次にキャッシュをどのようにカスタマイズするかを決める必要があります。
更新頻度が高いコンテンツ
最も一般的なキャッシュ戦略は、エッジでのキャッシュ有効期限(TTL)を更新することです。Acme社は、頻繁に変更されると判断した自社のWebサイトの特定のコンテンツに対して、Cloudflareがキャッシュから提供されるリソースが適格であるとみなす時間を短く変更することができます。これにより、Cloudflareがオリジンに戻ってコンテンツを再検証・更新する頻度を上げることができます。「エッジでのキャッシュTTL」セクションでは、Cloudflareがオリジンから取得したステータスコードに応じたリソースのTTLを定義したり、配信元サーバーからキャッシュ制御命令が送信されなかった場合にCloudflareがキャッシュすべきものを定義することもできます。
更新頻度が低いコンテンツ
一方、Acme社があまり頻繁に変更されないコンテンツ(faviconやロゴなど)を多く持ち、オリジンではなくCloudflareのキャッシュから提供することを好む場合、新しいCache RuleでどのコンテンツをCache Reserveの対象とするかを定義することができます。Cache Reserveは、アセットをCloudflareのキャッシュに長期間持続的に保存することで、エグレス料金を削減します。
従来、ユーザーがCache Reserveを有効にすると、そのゾーン全体がCache Reserveに書き込まれる対象となっていました。Webサイト上のすべてのリソースのオリジンからのエグレス料金を節約することを重視するお客様にとっては、これは依然として最善の方法です。しかし、どのCache Reserveに含めるアセットや対象とするアセットのサイズなどを正確に制御したいお客様には、Cache Reserve Eligibility Ruleを使用いただくことで、カスタマイズされた方法でキャッシュヒットを正確に増やし、オリジンからのエグレス料金を削減することができます。このルールにはCache Reserveサブスクリプションが必要です。
例:オリジンが低速な場合
架空の例で考えてみましょう。最近、Acme社のCloudflareログにエラーが増加しています。これらのエラーは、Acme社が新たに提供を始めた自社のデータを基にしたレポートに関連するものです。このレポートでは、オリジンが複数のデータベースにアクセスし、いくつかの計算を行い、その計算を基にレポートを作成する必要があります。オリジンは、このレポートの作成にかかるバックグラウンド処理がすべて完了するまで返答を待つ必要があります。完成後、レポートの閲覧を希望する訪問者からのトラフィックが殺到しました。しかし、オリジンサーバーの処理が追いつきません。発生するエラーの多くは「524」で、これはCloudflareにオリジンのレスポンスがある前にタイムアウトを迎えたことに関連するものです。
Acme社はオリジン側のインフラを拡張することでこれを改善する計画を立てていますが、導入に長い時間がかかっています。同社は導入までの間、Cache Rulesを使用してタイムアウトを長く設定することができます。従来、Cloudflareと連続する2回のオリジンの読み取り間のタイムアウト値は100秒であったため、オリジンが100秒以上に応答を返さなかった場合、524エラーが発生する可能性がありました。Cache Ruleを使用してこのタイムアウトを延長することで、Acme社はCloudflareのキャッシュをより多く使用することができます。
上記のキャッシュ戦略は、オリジン上でリソースが変更される頻度とオリジンのパフォーマンスに焦点を当てたものですが、その他にも、Cloudflare上でどのようにキャッシュを定義すべきかをお客様が決定できるようにするカスタムキャッシュキー、Cloudflareが特定のキャッシュされたアセットをいつ再検証すべきかを顧客が決定できるようにする強力なETagsの尊重、Cloudflareがコンテンツに関するキャッシング決定を行う際に使用すべき非標準ポートを顧客が定義できるようにするカスタムポートなど、他の戦略を可能にするルールを数多く用意しています。
Cache Rulesの全リストはこちらをご覧ください。
今すぐCache Rulesをお試しください!
私たちは今後もCloudflareでキャッシュを使用するすべての人が簡単に強力な制御機能を使用できる追加ルールの構築とリリースを継続します。Cache Rules機能に関する追加のご要望がありましたら、Cloudflare Communityまでお知らせください。
ダッシュボードにアクセスして、今すぐCache Rulesをお試しください!