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 機能でトリガーすることができます。プッシュされるアセットは、パラメーターとして関数に渡されます。例:

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

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


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

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