Streaming Miss (ストリーミングミス)
最終更新日 2023-02-07
オリジンからオブジェクトを取得する際、Streaming Miss 機能を使用すると、オブジェクトを受け取りながら、レスポンスを直ちにクライアントに送信し、オブジェクト全体のダウンロード完了後に、オブジェクトはキャッシュに書き込まれます。これにより、最初のバイトの到着におけるレイテンシ (クライアントがレスポンスボディの受信を開始するまでに待たなければならない時間) が短縮されます。
ヒント
サイズの大きなリソースを配信するサービスでは、セグメントキャッシュを有効にすることをお勧めします。セグメントキャッシュが有効化されていない場合、アカウントのリソースサイズ制限は、お客様が Fastly の使用を開始した時期によって異なります。
- 2020年6月17日以降に作成したアカウント - セグメントキャッシュを利用しない場合に配信可能なオブジェクトサイズの上限は20MBです。
- 2020年6月17日以前に作成したアカウント - セグメントキャッシュ を利用しない場合にキャッシュ可能なファイルサイズの上限は、ストリーミングミス を使用しないリクエストでは2GB、ストリーミングミスを使用するリクエストでは5GBとなります。
注意
ストリーミングミスが有効になっている場合、レスポンスボディの転送 中にエラーが発生しても、ヘッダー情報はすでにクライアントに送られているため、Fastly はエラーをクライアントに送信できません。この場合、接続はクローズされ、レスポンスは切り捨てられます。
VCL スニペットを作成してストリーミングミスを有効にする
以下の手順に従い VCL スニペットで beresp.do_stream
の true
を vcl_fetch
に設定することで、ストリーミングミスを有効にすることができます。
- Fastly コントロールパネルにログインします。
- Home ページから、適切なサービスを選択します。検索ボックスで ID、名称、ドメインによる検索が行えます。
- Edit configuration をクリックし、アクティブなバージョンをクローンするオプションを選択します。
VCL Snippets をクリックします。
Create your first VCL snippet をクリックします。
以下の要領で、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;
を追加します。
- Name フィールドに適切な名前を入力します (例:
Create をクリックしてスニペットを作成します。
- Activate をクリックして設定への変更をデプロイします。
Fastly ヘッダーを作成してストリーミングミスを有効にする
以下の手順に従い Fastly ヘッダーで beresp.do_stream
の true
を vcl_fetch
に設定することで、ストリーミングミスを有効にすることができます。
- Fastly コントロールパネルにログインします。
- Home ページから、適切なサービスを選択します。検索ボックスで ID、名称、ドメインによる検索が行えます。
- Edit configuration をクリックし、アクティブなバージョンをクローンするオプションを選択します。
- Content をクリックします。
Create header をクリックします。
以下の要領では、Create a headerページの各フィールドに入力します。
- Nameフィールドには、ヘッダールール名を入力します (例:
Enabling Streaming Miss
)。 - Type メニューから Cache を選択し、Action メニューから Set を選択します。
- Destinationフィールドに
do_stream
と入力します。 - Sourceフィールドに
true
と入力します。 - Destinationフィールドのヘッダーを変更する場合、Ignore if setメニューからNoを選択します。変更しない場合はYesを選択してください。
- Priority フィールドに、ヘッダールールを実行する順番を入力します。
- Nameフィールドには、ヘッダールール名を入力します (例:
Create をクリックします。
- 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 は、オンザフライ圧縮機能と併用できません
Streaming Miss は、大容量ファイルが圧縮されているかどうかに関わらず利用することができます。ただし、圧縮されていないオブジェクトに対するオンザフライの gzip 圧縮機能と Streaming Miss を併用することはできません。具体的には、VCL でberesp.gzip
またはberesp.brotli
が true に設定されると、Streaming Miss が無効になります。
Streaming Miss は ESI (Edge-Side Includes) と併用できません
キャッシュされたページにコンテンツを動的に挿入する ESI で処理されたレスポンスは、ストリーミングできません。また、ESI テンプレートからインクルードされたレスポンスもストリーミングできません。レスポンスに対して ESI が有効化されている場合、または <esi:include>
によってインクルードされるレスポンスの場合、Streaming Miss が無効化され、取得可能なオブジェクトのサイズの上限は、Streaming Miss が適用されない場合と同じで 2GB となります。
翻訳についての注意事項
このフォームを使用して機密性の高い情報を送信しないでください。サポートが必要な場合は、サポートチームまでご連絡ください。このフォームは reCAPTCHA によって保護されており、Google のプライバシーポリシーと利用規約が適用されます。