前回の発表に続き、Chrome 106 およびその他の Chromium ベースのブラウザの次回リリースでは、HTTP/2 サーバー push のサポートがデフォルトで無効になります。
削除される理由
HTTP/2 サーバー プッシュにより、ウェブサイトは、リクエストを待たずに、ページに必要なリソースを事前に送信できるようになりました。ただし、Jake Archibald が以前に書いたように、これは問題があり、パフォーマンス上のメリットを実現するのは難しいことが多かったです。その結果、この機能はあまり使用されず、HTTP/2 サイトのわずか 1.25% でこの機能が使用されていました。
HTTP/2 Server Push の使用に関する分析では、明確な純粋なパフォーマンスの向上はなく、多くの場合パフォーマンスが低下するという、さまざまな結果が得られています(Chrome、Akamai)。
プッシュは仕様に含まれていましたが、多くの HTTP/3 サーバーやクライアントには実装されていませんでした。新しい HTTP/3 を使用しているウェブの大部分では、プッシュは事実上廃止されています。先日この分析を再実行したところ、サイトによる HTTP/2 のサポート率は 1.25% から 0.7% に低下しました。
HTTP/2 サーバー push の代替手段
103 早期ヒントは、エラーが発生しにくい代替手段であり、プッシュと同じ多くのメリットがあり、デメリットは大幅に軽減されています。103 早期ヒントでは、サーバーがリソースをプッシュするのではなく、すぐにリクエストするとメリットがあるリソースのヒントのみをブラウザに送信します。これにより、ブラウザは、これらのリソースが必要かどうか(たとえば、HTTP キャッシュにすでにこれらのリソースが存在する場合など)を制御できます。
重要なリソースのプリロードも、ページとブラウザが連携して、ページの読み込みの早い段階で重要なリソースを事前に読み込む方法です。この方法では、ページ自体を最初に送信する必要があるため、サーバー プッシュや早期ヒントほど高速ではありませんが、重要なページ リソースを遅らせないという利点があります。これは、サーバー プッシュと早期ヒントの両方で発生する可能性があります。
まとめ
ウェブでは、試行錯誤を行い、使用しなくなったものを破棄する必要があります。Push の可能性は素晴らしいように思えましたが、実際には、想定していたよりも問題が多発しました。ただし、Push から多くのことを学び、その知見を 103 早期ヒントの設計に活かしました。これで、移行を完了して Push から移行できます。
リソース
- Chromium の非推奨と削除
- ChromeStatus のエントリ: HTTP/2 プッシュを削除
- 削除の意向: HTTP/2 と gQUIC サーバー push
- Chromium の問題: HTTP/2 プッシュをデフォルトでオフにする