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

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

この機能が削除されるのはなぜですか?

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

HTTP/2 サーバー プッシュの使用を分析した結果、明らかな正味のパフォーマンスの向上や多くの場合にパフォーマンスの低下は見られず(ChromeAkamai)、まちまちです。

push は仕様に含まれていましたが、多くの HTTP/3 サーバーやクライアントでは実装されていませんでした。新しい HTTP/3 を使用しているウェブの多くでは、push はすでに実質的に廃止されています。その分析を最近再実行すると、サイトによる HTTP/2 サポートの 1.25% が 0.7% に低下していることがわかります。

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

103 Early Hints は、エラーが発生しにくく、Push と同等のメリットが多く、デメリットもはるかに少ない代替手段です。103 Early Hints は、サーバーがリソースをプッシュするのではなく、すぐにリクエストすることでメリットを得られる可能性のあるリソースのヒントのみをブラウザに送信します。これにより、たとえば、HTTP キャッシュにすでにリソースが含まれているかどうかなど、これらが必要かどうかの判断はブラウザが管理します。

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

おわりに

ウェブがさまざまなことを試し、使用しないときには破棄できる必要があります。Push は大きな可能性を秘めているように見えますが、実際には、予想以上に高い問題を抱えていました。しかし、Push から多くのことを学び、それが 103 Early Hints の設計に取り入れられました。ここまでで、進行を完了して push から離れます。

謝辞

ヒーロー画像(作成者: Scott RodgersonUnsplash