パージとは?

コンテンツをキャッシュする仕組みを理解したら、コンテンツを効率的に無効化する方法を理解することも重要です。Phil Karlton 氏は、「コンピューターサイエンスにおける最も困難な2つの課題は、キャッシュの無効化と名前付けである」と述べています。キャッシュの無効化(パージまたはキャッシュパージ)とは、キャッシュが自然に期限切れになったり削除されたりする前に、キャッシュからコンテンツを削除するプロセスです。パージされたオブジェクトがリクエストされると、そのオブジェクトはキャッシュではなく、オリジンサーバーから取得されます。

Web サイトの所有者がキャッシュをパージする理由はいくつかあります。たとえば、オンラインリテーラーを想定してみましょう。商品の価格や在庫数に関して常に最新のデータが使用されるようにする必要があります。そのためには、パージポリシーを実装することが得策かもしれません。または、ニュースサイトを運営していて、記事の見出しやコンテンツが古く、無効であるとします。これらの古いデータをパージすることで、オリジンサーバーから新しい見出しとコンテンツを取得し、キャッシュに保存することができます。

設定前の注意点

エッセンシャルガイドの「キャッシュとは?」と「CDN とは?」を参照し、このガイドで使用される重要な概念や用語を理解しておくことをお勧めします。

パージの仕組み

ガイド「キャッシュとは?」では、リクエストされたオブジェクトをキャッシュに保存する期間など、リクエストとレスポンスに関する情報が HTTP ヘッダーによって送信されることが分かりました。キャッシュに保存されたオブジェクトには、TTL または有効期限と呼ばれる鮮度の有効期限があり、有効期間中はオリジンサーバーで再検証することなくオブジェクトをキャッシュから配信することができます。キャッシュされたオブジェクトが TTL 値に達すると期限切れとなり、キャッシュは新鮮と見なされなくなります。このようなオブジェクトは、正式に削除またはキャッシュが再検証されるまで、失効済みコンテンツとして配信され続けることが可能です。

パージによって、自然に期限切れになる前にオブジェクトを無効化できます。データに誤りがある場合やデータが古くなった場合、または最新のデータを取得した場合など、オブジェクトをパージすることが望ましいケースがあります。いずれの場合も、パージすることで、現在サイトにキャッシュされているオブジェクトをオリジンに保存されている最新バージョンに置き換えることができます。

先ほど挙げた例の1つを考えてみましょう。ニュース記事を公開したところ、誤りがあることに気付いたとします。記事を修正し、デプロイプロセスを通じてオリジンサーバーにプッシュします。しかし、パージリクエストを送信するまで、キャッシュに残っている誤りのある記事が読者に配信される可能性があります。パージリクエストは HTTP ヘッダーでも実行できます。パージリクエストによって、キャッシュされたオブジェクトをクライアントリクエストに返すのを停止し、代わりにオリジンから新しいオブジェクトを取得するようにキャッシュに通知されます。キャッシュ内のデータはこの新しいオブジェクトによって置き換えられ、後続のリクエストには新たにキャッシュされた新しいオブジェクトが返されます。

パージ方法は、リバースプロキシや CDN など、実装したリモートキャッシュに対してのみ機能することに注意してください。パージリクエストをコンピュータブラウザなどのユーザーのローカルキャッシュに送信して、強制的にパージすることはできません。CDN を使用する場合、最初にブラウザにオブジェクトがキャッシュされないように、HTTP ヘッダーを設定することをおすすめします。

Fastly によるパージ

オブジェクトをパージする際、適切なタイミングでキャッシュ量をパージしていることを確認する必要があります。失効済みファイルが少ない場合にキャッシュ全体をパージすると、非効率的かつ再検証にかかるコストが高くなります。Fastly では、更新したオブジェクトのみを正確にパージすることができます。Fastly のさまざまなパージ方法は、Fastly コントロールパネルまたは API を介して開始し、単一のサービスで実行することができます (複数のサービス間では実行されません)。

Fastly では、特定のパージをソフトパージまたはハードパージとして実行するオプションも提供します。ソフトパージは、オブジェクトを無効化し、失効済みコンテンツとしてマークします。次回、ユーザーがオブジェクトをリクエストすると、失効済みオブジェクトを配信し、更新されたオブジェクトがオリジンから取得されます。オリジンサーバーがダウンした場合でも、失効済みオブジェクトはクライアントリクエストに配信することができます。ハードパージは、キャッシュされたオブジェクトを永続的に無効化し、将来のリクエストに対して使用不可能になります。Fastly は、Fastly POP で再キャッシュする前に、オリジンサーバーからオブジェクトを再度取得するように強制します。

まれなケースでは、キャッシュ全体をパージする場合、Purge all オプションを開始します。設計により、Purge all は一回の操作でキャッシュ全体を無効化するためのハードパージです。

Fastly では、よりターゲットを絞ったパージを行うと、URL またはサロゲートキーでパージすることができます。URL またはサロゲートキーによるパージは、キャッシュ全体ではなく、単一のオブジェクトまたはターゲットを絞ったオブジェクトセットを無効化することができます。これにより、必要なものをパージするだけで済むため、コストを削減することができます。URL を介してパージする場合は、パージする単一の URL パスを指定します。サロゲートキーでパージすると、一意の識別子をオブジェクトのセットに割り当て、その識別子を有するオブジェクトのみをパージするように指定します。これは、関連するオブジェクトのグループをパージするのに役立ちます。また、これらのオプションの両方は、ソフトまたはハードパージとして実行することができます。

Fastly を選ぶ理由

Fastly によるパージは、顧客とエンドユーザーの両方にメリットをもたらします。

Fastly では、コンテンツをパージするのに要するグローバル平均時間は150ミリ秒です (多くの場合高速です!)。これにより、オブジェクトをより長くキャッシュし、必要に応じてオンデマンドでパージすることができます。また、API クライアントまたは統合を使用してパージプロセスを自動化し、コンテンツが変更されたときに即座にパージし、ユーザが最新かつ最高のバージョンにアクセスできるようにします。

Fastly サーバーには分散パージシステムがあります。つまり、キャッシュサーバーはパージ自体を分散する責任があります。つまり、最も近いサーバーにパージを送信し、そこから他のすべてのキャッシュサーバに直接送信することで、中央集権型のシステムに伴う単一点障害を排除することができます。特定の領域で障害が発生した場合、他のキャッシュサーバーはパージリクエストを応答することができます。

エッジでキャッシュし、リアルタイムでパージすることで、キャッシュからのリクエストを多く処理し、オリジンへのトリップを最小限に抑えることができます。これにより、サーバーの負荷が軽減されます。つまり、サーバーや他の関連インフラストラクチャ機器への投資を削減し、コンテンツの保存と配信にFastlyを利用することが可能になります。

今後の展望

Fastly のパージ機能には、Fastly コントロールパネルまたは Fastly API を使用してアクセスすることができます。Fastly 101チュートリアルでは、キャッシュ全体をパージし、キーを使用してパージする実際の例を紹介します。

Back to Top