Blink: Intent to Remove: HTTP/2 and gQUIC server push
Server Push has a use case for web APIs. I just published a benchmark showing that under certain conditions APIs using Server Push (such as APIs implementing the <a href="https:&#x2F;&#x2F;vulcain.rocks" rel="nofollow">https:&#x2F;&#x2F;vulcain.rocks</a> specification) can be 4x times faster than APIs generating compound documents (GraphQL-like): <a href="https:&#x2F;&#x2F;github.com&#x2F;dunglas&#x2F;api-parallelism-benchmark" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;dunglas&#x2F;api-parallelism-benchmark</a><p>They key point for performance is to send relations in parallel in separate HTTP streams.
Even without Server Push Vulcain-like APIs are still faster than APIs relying on compound documents thanks to Preload links and to HTTP&#x2F;2 &#x2F; HTTP&#x2F;3 multiplexing.<p>Using Preload links also fixes the over-pushing problem (pushing a relation already in a server-side or client-side cache), some limitations regarding authorization (by default most servers don&#x27;t propagate the Authorization HTTP header nor cookies in the push request), and and is easier to implement.<p>(By the way Preload links were supported from day 1 by the Vulcain Gateway Server.)<p>However, using Preload links introduce a bit more latency than using Server Push. Does the theoretical performance gain is worth the added complexity? To be honest I don&#x27;t know.  I guess it doesn&#x27;t.<p>Using Preload links combined with Early Hints (the 103 status code - RFC 8297) may totally remove the need for Server Push. And Early Hints are way easier than Server Push to implement (it&#x27;s even possible in PHP!).<p>Unfortunately browsers don&#x27;t support Early Hints yet.<p>- Chrome bug: <a href="https:&#x2F;&#x2F;bugs.chromium.org&#x2F;p&#x2F;chromium&#x2F;issues&#x2F;detail?id=671310" rel="nofollow">https:&#x2F;&#x2F;bugs.chromium.org&#x2F;p&#x2F;chromium&#x2F;issues&#x2F;detail?id=671310</a><p>- Firefox bug: <a href="https:&#x2F;&#x2F;bugzilla.mozilla.org&#x2F;show_bug.cgi?id=1407355" rel="nofollow">https:&#x2F;&#x2F;bugzilla.mozilla.org&#x2F;show_bug.cgi?id=1407355</a><p>For the API use case, it would be nice that Blink adds support of Early Hints before killing Server Push!