HTTP/2 サーバープッシュ

HTTP/2 サーバープッシュでは、Fastly が事前に読み込んで、クライアントがリクエストする前に HTTP/2 準拠のクライアントにレスポンスを送信できるようにする、ルールを設定することができます。レスポンスヘッダーまたは VCL 関数を使用して HTTP/2 サーバープッシュを開始できます。

Fastly は、オリジンサーバーが送信したプリロードキーワードを持つ link ヘッダーを認識し、指定されたリソースをクライアントにプッシュします。例えば、この link レスポンスヘッダーは HTTP/2 プッシュをトリガーします。

link: </assets/jquery.js>; rel=preload; as=script

1つの link ヘッダーで、複数の link ヘッダーと複数のアセットをサポートしています。

link: </assets/jquery.js>; rel=preload; as=script, </assets/base.css>; rel=preload; as=style

link ヘッダーで使用される属性は、サーバーのプッシュやヘッダー自体の処理方法をコントロールできます。追加の属性を含まない場合、link ヘッダーはサーバープッシュをトリガーし、クライアントに転送されます。

link: </assets/jquery.js>; rel=preload; as=script

nopush ディレクティブと併せて使われた場合、ヘッダーはプッシュをトリガーせず、クライアントにそのままに渡されます。

link: </assets/jquery.js>; rel=preload; as=script; nopush

x-http2-push-only ディレクティブと併せて使われた場合、ヘッダーはサーバープッシュをトリガーしますが、その後削除され、クライアントには転送されません。

link: </assets/jquery.js>; rel=preload; as=script; x-http2-push-only

属性は必要に応じて組み合わせることができます。

link: </assets/jquery.js>; rel=preload; as=script, </assets/base.css>; rel=preload; as=style; nopush, </assets/main.css>; rel=preload; as=style; x-http2-push-only

リンクヘッダーと Amazon S3 バケット

Amazon Simple Storage サービス (S3) バケットをオリジンサーバーとして使用している場合、以下のようなキャッシュ設定条件を適用して link ヘッダーを使用することができます。

set beresp.http.Link = beresp.http.x-amz-meta-Link

h2.push() 関数によるサーバープッシュ

サーバープッシュを h2.push() VCL 関数でトリガーすることができます。プッシュされるアセットは、パラメーターとして関数に渡されます。例:

1
2
3
4
5
6
7
sub vcl_recv {
#FASTLY recv
if (fastly_info.is_h2 && req.url ~ "^/index.html")
{
h2.push("/assets/jquery.js");
}
}

この h2.push() 関数は、呼び出されるとすぐにサーバープッシュをトリガーするため、サーバーレスポンスに link ヘッダーを付ける必要がなくなります。つまり、プッシュのトリガーとなったリクエストのレスポンスをサーバーから受け取る前に、アセットをクライアントにプッシュできるということであり、配信も加速されます。


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

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