Chrome から HTTP/2 サーバー プッシュを削除

前回の発表に続き、Chrome 106 およびその他の Chromium ベースのブラウザの次回リリースでは、HTTP/2 サーバー プッシュのサポートがデフォルトで無効になります。

削除される理由

HTTP/2 サーバー プッシュにより、ウェブサイトは、ページが必要とするリソースを、リクエストされるのを待たずに事前に送信できるようになりました。ただし、Jake Archibald が以前に書いたように、これは問題があり、パフォーマンス上のメリットを実現するのは難しいことが多かったです。その結果、この機能を使用している HTTP/2 サイトのわずか 1.25% ではあまり使用されませんでした。

HTTP/2 サーバー プッシュの使用に関する分析では、明確な純粋なパフォーマンスの向上は見られず、多くの場合パフォーマンスが低下しています(ChromeAkamai)。

push は仕様に含まれていましたが、多くの HTTP/3 サーバーとクライアントでは実装されていません。新しい HTTP/3 を使用しているウェブの大部分では、プッシュは事実上廃止されています。先日この分析を再実行したところ、サイトによる HTTP/2 のサポート率は 1.25% から 0.7% に低下しました。

HTTP/2 サーバー プッシュの代替手段

103 Early Hints は、Push と同じ長所を多く含み、短所がはるかに少ない、エラーが発生しにくい代替手段である。103 早期ヒントでは、サーバーがリソースをプッシュするのではなく、すぐにリクエストするとメリットがあるリソースのヒントのみをブラウザに送信します。これにより、ブラウザは、これらのリソースが必要かどうか(たとえば、HTTP キャッシュにすでにこれらのリソースが存在する場合など)を制御できます。

クリティカル リソースのプリロードも、ページとブラウザが連携して、ページの読み込みの早い段階でクリティカル リソースを事前に読み込む方法です。この場合、最初にページを送信する必要がありますが、サーバー プッシュや早期ヒントほど高速ではありませんが、重要なページリソースを遅延させないという利点もあります。どちらのソリューションでも起こりえます。

まとめ

ウェブでは、試行錯誤を行い、使用しなくなったものを破棄する必要があります。Push の可能性は素晴らしいように思えましたが、実際には、想定していたよりも問題が多発しました。しかし、103 Early Hints の設計に至った push から多くのことを学びました。これで、移行を完了し、Push から移行できます。

リソース