条件の設定
最終更新日 2018-05-11
条件は、リクエストの処理方法を制御します。条件を使用して、サービス内の基本設定オブジェクトにロジックを追加し、そのオブジェクトが適用される条件を定めることができます。条件を記述するには最低限のプログラミングが必要です。VCL IF ステートメントで、設定オブジェクトをラップすることもできます。
条件の使用開始前に
条件の使用を開始する前に、基本的な論理式の構造を理解しておく必要があります。具体的には、条件を扱う際に、C 言語の基本的な論理式構文 (基本ロジック、&& などの論理演算子、 優先順位など) を理解している必要があります。C 言語または Perl 言語の「IF」スタイル式を扱う基本的なプログラミングガイド (Perl であれば Tizag Perl チュートリアル) が入門に適しています。Fastly での条件例に直接適用できませんが、これらの言語のシンタックスは VCL と似ています。
シンプルな条件の例
Fastly による条件の処理方法を理解する最も簡単な方法は、次の IF 文を見ていただくことです。
1IF2 this condition happens3THEN4 respond this way
実例を見るとよく分かります。ほとんどの場合、サイトでは通常どおり情報のリクエストが処理されますが、顧客が検索用語を誤入力した場合や、探しているものを見つけられない場合に、404 Not Found エラーを表示しなければならないことがしばしばあります。このような場合、標準 404 エラーが Web サイトに表示されてもユーザーの役には立ちません。この問題を解決するには、お客様が探しているものがサーバーで見つからない場合に (条件)、サポートチームに問い合わせるように指示する、カスタマイズされた404メッセージを表示した方が良いでしょう (レスポンス)。
英語でシンプルに記述すると、IF 文は次のようになります。
1IF2 404 Not Found is what we have to tell the customer3THEN4 respond with the special Contact Support page
上の例では IF 行が、設定した条件です。その条件が満たされた場合に起こることは、THEN 行に記述されています。
上記の例の英語を VCL 変数と少々の HTML で置き換えると、次のようになります。
1IF2 beresp.status == 4043THEN4 respond with <html><body><h1>Can't find it?</h1><p>Contact support@example.com for help.</p></body></html>
ご興味のある場合は、カスタムレスポンスでエラーページを作成するためのステップ・バイ・ステップ指示があります
条件の利用に関するアイデア
条件の活用方法についてアイデアを得たい場合は、以下を参考にしてください。
条件 | レスポンス | 手順 |
---|---|---|
ウェブロボットにウェブサイトの指定したエリアをクロールさせたい | Web サイトのどの領域を処理、スキャンさせないかを定義するためのカスタマイズされた robots.txt ファイルを提供する | robots.txt ファイルを作成してカスタマイズする |
サーバーが 404 Not Found レスポンスを返す必要がある | 404レスポンスのみを対象としたデフォルトのキャッシュ時間を3600秒 (60分) から120秒 (2分) に変更する | バックエンドのレスポンスに基づいてキャッシュ設定のデフォルトをオーバーライドする |
ユーザーがサイトで人気のページをリクエストしたところ、そのページは別の場所に移動していた | オリジンサーバーに戻らずに、エッジで Fastly にページ要求をリダイレクトさせる | リダイレクト |
条件のタイプと使用可能なタイミング
条件は次の3つのタイプに分けられます。
- リクエスト条件
- レスポンス条件
- キャッシュ条件
条件のタイプは、キャッシュ処理の特定の段階で、どの設定オブジェクトに適用できるかを決定します。また、キャッシュの各段階は、条件を作成するために使用できる、一連のVCL 変数と連携します。
条件タイプ | Fastly が以下を実行した時に適用 | 次の VCL 変数と動作 |
---|---|---|
リクエスト | リクエストを処理 | client.* server.* req.* |
レスポンス | リクエストに対するレスポンスを処理 | client.* server.* req.* resp.* |
キャッシュ | レスポンスがキャッシュされる直前に、オリジンからレスポンスを受信 | client.* server.* req.* beresp.* |
条件に関するより詳しい情報
Varnish Cache のドキュメントに、条件の作成に使用できる変数のリストが掲載されています。ただし、Varnish が許可する変数の中には、利用できないものや Fastly サービスのコンテキストでは意味を成さないものがあることに留意してください。詳細については、VCL へのガイドをご覧ください。