ストリーミングミス

オリジンからオブジェクトを取得する際、ストリーミングミス機能を使用すると、オブジェクト全体を取得したあとでのみ、レスポンスを直ちにクライアントにストリーミングし、キャッシュに書き込まれるようにします。これにより、最初のバイトの到着におけるレイテンシ (クライアントがレスポンスボディの受信を開始するまでに待たなければならない時間) が短縮されます。

ヒント

サイズの大きなリソースを配信するサービスでは、セグメントキャッシュを有効にすることをお勧めします。セグメントキャッシュが有効化されていない場合、アカウントのリソースサイズ制限は、お客様が Fastly の使用を開始した時期によって異なります。

  • 2020年6月17日以降に作成したアカウント - セグメントキャッシュを利用しない場合に配信可能なオブジェクトサイズの上限は 20 MB です。
  • 2020年6月17日以前に作成したアカウント - セグメントキャッシュを利用しない場合にキャッシュ可能なファイルサイズの上限は、ストリーミングミスを使用しないリクエストでは 2 GB、ストリーミングミスを使用するリクエストでは 5 GB となります。

注意

ストリーミングミスが有効になっている場合、レスポンスボディの転送中に](/ja/guides/failure-modes-with-large-objects)エラーが発生[しても、ヘッダー情報はすでにクライアントに送られているため、Fastly はエラーをクライアントに送信できません。この場合、接続はクローズされ、レスポンスは切り捨てられます。

VCL スニペットを作成してストリーミングミスを有効にする

以下の手順に従い VCL スニペットで vcl_fetchberesp.do_streamtrue に設定することで、ストリーミングミスを有効にすることができます。

  1. Fastly コントロールパネルにログインします。
  2. Home ページから、適切なサービスを選択します。検索ボックスで ID、名称、ドメインによる検索が行えます。
  3. Edit configuration をクリックし、アクティブなバージョンをクローンするオプションを選択します。
  4. VCL Snippets をクリックします。

  5. Create your first VCL snippet をクリックします。

    VCL スニペットを使用してストリーミングミスを有効にする

  6. 以下の要領で、Create a VCL snippet の各フィールドに入力します。

    • Name フィールドに適切な名前を入力します (例: Enabling Streaming Miss)。
    • Type (placement of the snippets) のセクションで、within subroutine を選択します。
    • Select subroutine メニューから、fetch (vcl_fetch) を選択します。
    • VCL フィールドに set beresp.do_stream = true; を追加します。
  7. Create をクリックしてスニペットを作成します。

  8. Activate をクリックして設定への変更をデプロイします。

Fastly ヘッダーを作成してストリーミングミスを有効にする

以下の手順に従い Fastly ヘッダーで vcl_fetchberesp.do_streamtrue に設定することで、ストリーミングミスを有効にすることができます。

  1. Fastly コントロールパネルにログインします。
  2. Home ページから、適切なサービスを選択します。検索ボックスで ID、名称、ドメインによる検索が行えます。
  3. Edit configuration をクリックし、アクティブなバージョンをクローンするオプションを選択します。
  4. Content をクリックします。
  5. Create header をクリックします。

    ストリーミングミスの有効化

  6. 以下の要領で、Create a header ページの各フィールドに入力します。

    • Name フィールドには、ヘッダールール名を入力します (例: Enabling Streaming Miss)。
    • Type メニューから Cache を選択し、Action メニューから Set を選択します。
    • Destination フィールドに do_stream と入力します。
    • Source フィールドに true と入力します。
    • Destination フィールドのヘッダーを変更する場合、Ignore if set メニューから No を選択します。変更しない場合は Yes を選択してください。
    • Priority フィールドに、ヘッダールールを実行する順番を入力します。
  7. Create をクリックします。

  8. Activate をクリックして設定への変更をデプロイします。

Streaming Miss の制約事項

ストリーミングミスの使用にはいくつかの制約事項があります。

HTTP/1.0 クライアントはストリーミングミスを利用できません

HTTP/1.0 によるリクエストでオリジンからコンテンツを取得し、オリジンからのレスポンスヘッダーに Content-Length フィールドが含まれていない場合、ストリーミングミスは無効化され、取得可能なオブジェクトのサイズの上限は、ストリーミングミスが適用されない場合と同じく 2 GB となります。クライアントが Content-Length を受け取らない場合、クライアントは、ダウンロードの適切な終了と、その上流のどこかで突然発生した接続の切断を区別できません。

オブジェクトのストリーミングミスが進行中にそのオブジェクトに対する HTTP/1.0 のリクエストを受信した場合、ストリーミングミスを行わずにオブジェクトを取得する場合と同様に、HTTP/1.0 リクエストはオブジェクト全体がダウンロードされてから、レスポンスヘッダーやレスポンスボディを受信します。

キャッシュヒットした場合はこの影響を受けません。HTTP/1.0 クライアントは、HTTP/1.1 クライアントと同様に、大容量ファイルをキャッシュから受け取ることができます。

ストリーミングミスは、オンザフライ圧縮機能と併用できません

ストリーミングミスは、大容量ファイルが圧縮されているかどうかに関わらず利用することができます。ただし、圧縮されていないオブジェクトに対するオンザフライの gzip 圧縮機能とストリーミングミスを併用することはできません。具体的には、VCL で beresp.gzip または beresp.brotli が true に設定されると、ストリーミングミスが無効になります。

ストリーミングミスは ESI (Edge-Side Includes) と併用できません

キャッシュされたページにコンテンツを動的に挿入する ESI で処理されたレスポンスは、ストリーミングできません。また、ESI テンプレートから含めたレスポンスもストリーミングできません。レスポンスに対して ESI が有効化されている場合、または <esi:include> により含められたレスポンスの場合、ストリーミングミスが無効化され、取得可能なオブジェクトのサイズの上限は、ストリーミングミスが適用されない場合と同じで 2 GB となります。


翻訳についての注意事項
このガイドは役に立ちましたか?

このフォームを使用して機密性の高い情報を送信しないでください。サポートが必要な場合は、サポートチームまでご連絡ください。このフォームは reCAPTCHA によって保護されており、Google のプライバシーポリシー利用規約が適用されます。