OpenResty Edge で HTTP キャッシュをリアルタイムパージする方法(全ネットワーク一括)
リアルタイムキャッシュパージとは、パージタスクを送信したその瞬間に、ゲートウェイネットワーク全体でキャッシュ済みの HTTP レスポンスを無効化する仕組みです。サーバーのリロード・再起動・設定のリリースは一切必要ありません。OpenResty Edge では、完全 URL、URL プレフィックス、またはカスタム条件(URI サフィックス、リクエストヘッダー、Cookie、クエリパラメータ)でパージ範囲を指定できます。
本チュートリアルでは、パージタスクの作成、Cache-Status レスポンスヘッダーによるキャッシュ状態の確認、URL プレフィックスでのパージ、そして柔軟なカスタム条件の構築までを順に解説します。
OpenResty Edge でのリアルタイムキャッシュパージタスクの作成
前回と同様に、OpenResty Edge の Admin Web コンソールにアクセスしましょう。こちらは当社のコンソールのサンプルデプロイメントです。各ユーザーには独自のローカルデプロイメントがあります。
今回は実際のアプリケーションである openresty.org ウェブサイトを使用します。
このアプリケーションに移動します。
このアプリケーションのキャッシュパージページに移動します。
既に多くの過去のパージタスクがあることがわかります。
新しいパージタスクを作成しましょう。
キャッシュをパージする方法は3つあります。完全な URL パス、
URL プレフィックス、
または複雑なカスタム条件です。
まずは完全な URL モードを試してみましょう。
これは openresty.org ウェブサイトの FAQ ページです。ここで http:// または https:// を使用するかどうかは重要ではありません。
これは、キャッシュキーにスキームを含めていないためです。デフォルトではスキームは含まれません。
キャッシュパージタスクを送信する前に、このウェブページのキャッシュがヒットしていることを確認し、パージの効果をテストできるようにしましょう。
ターミナルで、FAQ ウェブページにテストリクエストを送信して、既にキャッシュヒットしていることを確認します。
curl -I https://openresty.org/en/faq.html
そしてもう一度実行します。
返された Cache-Status: HIT レスポンスヘッダーに注目してください。
次に、キャッシュパージタスクを送信します。
これで、キャッシュがネットワーク全体でパージされました。
ゲートウェイネットワーク全体への一括パージ(リロード・リリース不要)
他のアプリケーションレベルの設定とは異なり、キャッシュパージタスクはゲートウェイネットワーク全体で即時に同期されます。新しいアプリケーション設定のデプロイは必要ありません。自社運用のプライベート CDN においても、この仕組みでリアルタイム無効化が実現できます。
キャッシュパージにはサーバーのリロード、再起動、またはバイナリアップグレードは必要ありません。
Cache-Status レスポンスヘッダーによるキャッシュ状態の確認(HIT / EXPIRED)
ターミナルでキャッシュステータスを再度確認しましょう。
curl -I https://openresty.org/en/faq.html
返された Cache-Status: EXPIRED レスポンスヘッダーに注目してください。現在は確かにキャッシュミスです。
2回目のリクエストは再びキャッシュヒットするはずです。
Cache-Status: HIT レスポンスヘッダーに注目してください。
URL プレフィックスによるキャッシュのパージ
今度は URL プレフィックスでパージを試してみましょう。
/en/ 配下のリソースをすべてパージします。
新しいタスクを送信します。
これでゲートウェイネットワーク全体に同期されました。
FAQ ページにテストリクエストを送信します。
curl -I https://openresty.org/en/faq.html
予想通り、キャッシュミスになりました。
URI プレフィックス /en/ 以下の別のページとして、イベントページ(events.html)をテストします。
curl -I https://openresty.org/en/events.html
これも予想通りキャッシュミスです。
または /en/ ページ自体も
curl -I https://openresty.org/en/
同様にキャッシュミスです。
他のタイプのリソースのキャッシュもパージできます。例えば、すべての CSS ファイル、すべての画像など、これらのファイルが事前定義された URL の場所に配置されている限り可能です。
この新しいパージタスクを今すぐ送信する必要はありません。
カスタムパージ条件の設定(サフィックス・ヘッダー・Cookie・パラメータ)
より複雑な条件を定義する必要がある場合があります。
例えば、URI の場所に関係なく、URI サフィックスが .css のすべてのリソースのキャッシュをパージすることができます。
サフィックス一致演算子を選択します。
次に、サフィックス文字列値を入力します。
現在のパージタスクにさらに条件を追加することができます。これらの条件はAND関係にあり、同時に満たす必要があります。
例えば、URI パラメータ、リクエストヘッダー、クッキーなどをチェックする条件を追加できます。
また、リテラル文字列パターンの代わりにワイルドカードや正規表現パターンを使用することもできます。
または、より多くの値のパターンを追加することもできます。これらの値はOR関係にあり、そのうちの 1 つを満たせば十分です。
これらの条件は自由に試すことができます。 ご覧のように、ページルールの条件と同様に非常に柔軟です。
以上が本日ご紹介する内容です。
よくある質問
リアルタイムキャッシュパージとは何か?
リアルタイムキャッシュパージとは、ゲートウェイネットワーク上のすべてのエッジノードでキャッシュ済み HTTP レスポンスを即時に無効化することです。OpenResty Edge では、パージタスクを送信した瞬間にゲートウェイネットワーク全体へ伝播し、ルールに一致するキャッシュオブジェクトは、キャッシュの有効期限切れ(自然失効)を待たずに配信されなくなります。
キャッシュパージにサーバーのリロードや再起動は必要か?
不要です。キャッシュパージタスクはゲートウェイネットワーク全体で即時に同期され、サーバーのリロード・再起動・バイナリアップグレードは一切必要ありません。アプリケーションレベル設定の変更とは異なり、新しい設定リリースも必要ありません。
Cache-Status でページがキャッシュされているか確認する方法は?
curl -I でリクエストを送信し、Cache-Status レスポンスヘッダーを確認します。Cache-Status: HIT はキャッシュから返された応答、Cache-Status: EXPIRED(またはミス)はオリジンから取得された応答を意味します。パージの前後で同じリクエストを送ることで、パージが反映されたかを確認できます。
CDN ネットワーク全体を一度にパージできるか?
可能です。1 件のパージタスクがゲートウェイネットワーク全体に適用されるため、自社運用の CDN を一括で無効化できます。範囲は完全 URL、URL プレフィックス(例:/en/ 以下すべて)、またはカスタム条件(URI サフィックス .css など)で指定できます。
OpenResty Edge について
OpenResty Edge は、マイクロサービスと分散トラフィックアーキテクチャ向けに設計された多機能ゲートウェイソフトウェアで、当社が独自に開発しました。トラフィック管理、プライベート CDN 構築、API ゲートウェイ、セキュリティなどの機能を統合し、現代のアプリケーションの構築、管理、保護を容易にします。OpenResty Edge は業界をリードする性能と拡張性を持ち、同時接続数の多いシナリオ・高負荷シナリオの厳しい要件を満たすことができます。K8s などのコンテナアプリケーショントラフィックのスケジューリングをサポートし、大量のドメイン名を管理できるため、大規模ウェブサイトや複雑なアプリケーションのニーズを容易に満たすことができます。
著者について
章亦春(Zhang Yichun)は、オープンソース OpenResty® プロジェクトの生みの親であり、OpenResty Inc. の創業者兼 CEO です。
章亦春氏(GitHub ID: agentzh)は中国江蘇省生まれで、現在は米国ベイエリアに在住しています。同氏は中国における初期のオープンソース技術と文化の提唱者およびリーダーの一人であり、Cloudflare、Yahoo!、Alibaba など、国際的に有名なハイテク企業に勤務した経験があります。「エッジコンピューティング」、「動的トレーシング」、「機械プログラミング」の先駆者であり、22 年以上のプログラミング経験と 16 年以上のオープンソース経験を持っています。世界中で 4000 万以上のドメイン名を持つユーザーを抱えるオープンソースプロジェクトのリーダーとして、同氏は OpenResty® オープンソースプロジェクトをベースに、米国シリコンバレーの中心部にハイテク企業 OpenResty Inc. を設立しました。同社の主力製品である OpenResty XRay(動的トレーシング技術を利用した非侵入型の障害解析・トラブルシューティングツール)と OpenResty Edge(マイクロサービスおよび分散トラフィックに最適化された多機能ゲートウェイソフトウェア)は、世界中の多くの上場企業および大企業から高い評価を得ています。OpenResty 以外にも、章亦春氏は Linux カーネル、Nginx、LuaJIT、GDB、SystemTap、LLVM、Perl など、複数のオープンソースプロジェクトに累計 100 万行以上のコードを貢献し、60 以上のオープンソースライブラリを開発しています。
翻訳
英文版の原文と日本語訳版(本文)をご用意しております。読者の皆様による他の言語への翻訳版も歓迎いたします。全文翻訳で省略がなければ、採用を検討させていただきます。心より感謝申し上げます!






















































