Streaming Miss (ストリーミングミス)

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

VCL Snippet を使用して Streaming Miss を有効にする

以下の手順で VCL Snippet の vcl_fetch 内で beresp.do_stream を true に設定することで、Streaming Miss を有効にすることができます。

  1. Fastly コントロールパネルにログインします。
  2. All services ページから、該当するサービスを選択します。検索ボックスを使用して ID、名前、またはドメインで検索することができます。
  3. Edit configuration ボタンをクリックし、アクティブなバージョンをクローンするオプションを選択します。ドメインページが表示されます。
  4. VCL Snippets のリンクをクリックします。VCL Snippets ページが表示されます。
  5. Create your first VCL snippet をクリックします。Create a VCL snippet ページが表示されます。

    VCL Snippet を使用して Streaming Miss を有効にする

  6. Name フィールドに適切な名前を入力します (例:Enabling Streaming Miss)。
  7. Type (placement of the snippets) のセクションで、within subroutine を選択します。
  8. Select subroutine メニューから、fetch (vcl_fetch) を選択します。
  9. VCL フィールドに set beresp.do_stream = true; を追加します。
  10. Create をクリックすると、スニペットが作成されます。
  11. Activate ボタンをクリックして設定変更をデプロイします。

ヘッダーを使用して Streaming Miss を有効にする

コントロールパネルで新しいヘッダーを作成することで、Streaming Miss を有効にすることもできます (この処理を適用する条件を指定することも可能です)。

  1. Fastly コントロールパネルにログインします。
  2. All services ページから、該当するサービスを選択します。検索ボックスを使用して ID、名前、またはドメインで検索することができます。
  3. Edit configuration ボタンをクリックし、アクティブなバージョンをクローンするオプションを選択します。ドメインページが表示されます。
  4. Content をクリックします。Content ページが表示されます。
  5. Create header ボタンをクリックします。Create a header ウィンドウが表示されます。

    Streaming Miss の有効化

  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 の制約事項

Streaming Miss の使用にはいくつかの制約事項があります。

HTTP/1.0 クライアントは Streaming Miss を利用できません

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

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

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

Streaming Miss は、オンザフライ gzip 圧縮機能と併用できません

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

Streaming Miss は ESI (Edge-Side Includes) と併用できません

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

Back to Top