Menu
Home Explore People Places Arts History Plants & Animals Science Life & Culture Technology
On this page
HTTP/2 Server Push
Web optimization protocol

HTTP/2 Server Push is an optional feature of the HTTP/2 and HTTP/3 network protocols that allows servers to send resources to a client before the client requests them. Server Push is a performance technique aimed at reducing latency by sending resources to a client preemptively before it knows they will be needed. In practice, Server Push frequently results in wasted bandwidth because the server rarely knows which resources are already loaded by the client and transmits the same resource multiple times, resulting in slowdowns if the resources being pushed compete for bandwidth with resources that were requested.

HTTP/2 Server Push is not a notification mechanism from server to client. Instead, pushed resources are used by the client when it may have otherwise produced a request to get the resource anyway.

We don't have any images related to HTTP/2 Server Push yet.
We don't have any YouTube videos related to HTTP/2 Server Push yet.
We don't have any PDF documents related to HTTP/2 Server Push yet.
We don't have any Books related to HTTP/2 Server Push yet.
We don't have any archived web articles related to HTTP/2 Server Push yet.

History

On May 14, 2015, HTTP/2 was standardized by RFC 7540, ratified as a Proposed Standard. The document includes section 8.2 entitled "Server Push" which introduced the concept to the protocol as an optional extension. Google Chrome 40 became the first browser supporting the final standardized HTTP/2 version, including the optional Server Push.6

In February 2018, Nginx 1.13.9 was released with optional support for HTTP/2 Server Push.7

In November 2020, Google announced its intent to remove Server Push from Google Chrome implementation of HTTP/2 and gQUIC (which later evolved into HTTP/3).8

In October 2022, Google announced their intent to remove Server Push from Google Chrome, citing the poor performance of the extension in practice, lack of use and better alternatives. Chrome 106 became the first release disabling Server Push by default.9

On October 29, 2024, Mozilla released Firefox 132, which removed HTTP/2 Server Push support due to "compatibility issues with various sites".10

Protocol

Unlike HTTP/1.1, HTTP/2 can multiplex multiple streams on one TCP connection. Server Push allows the server to open new streams by sending PUSH_PROMISE frames, in order to send the client resources it expects will be needed. A PUSH_PROMISE frame is similar to a GET request, but sent by the server. A client may choose to reject the push by sending an RST_STREAM frame, for example, if it already has the resource cached; if it does not, it will store the pushed data in a cache associated with the connection which will be consulted before a request is sent down that connection. Clients can also request that servers not send server pushes using a SETTINGS frame. The specification itself does not specify how servers choose what to push: a web server might send pushes to clients only on their first visit, to avoid redundantly sending cached resources.111213

Implementations

SoftwareFirst supporting versionLast supporting version
NginxServer1.13.9 (February 2018)141.25.1 (June 2023)15
LiteSpeedServer5.2Still supported, but deprecated16[better source needed]
Google ChromeClient40 (May 2015)106 (September 2022)171819
FirefoxClient?131.0 Beta 92021

References

  1. Belshe, M.; Peon, R.; Thomson, M. (May 2015). Thomson, M (ed.). "Hypertext Transfer Protocol Version 2 (HTTP/2)". doi:10.17487/RFC7540. A client can request that server push be disabled {{cite journal}}: Cite journal requires |journal= (help) https://www.rfc-editor.org/rfc/rfc7540

  2. Staff, Ars (2015-02-18). "HTTP/2 finished, coming to browsers within weeks". Ars Technica. Retrieved 2023-01-12. https://arstechnica.com/information-technology/2015/02/http2-finished-coming-to-browsers-within-weeks/

  3. "Intent to Remove: HTTP/2 and gQUIC server push". Google Groups. 2020-11-11. Archived from the original on 2021-11-28. Retrieved 2022-04-12. https://groups.google.com/a/chromium.org/g/blink-dev/c/K3rYLvmQUBY/m/vOWBKZGoAQAJ?pli=1

  4. "HTTP/2 server configurations". HTTP/2 Space. Archived from the original on 2022-03-27. Retrieved 2019-03-30. https://http2.co/http2-with-apache/

  5. "Server Push". Hypertext Transfer Protocol Version 2 (HTTP/2). Internet Engineering Task Force. May 2015. p. 60. sec. 8.2. doi:10.17487/RFC7540. RFC 7540. Archived from the original on 2022-04-04. Retrieved 2015-05-06. https://datatracker.ietf.org/doc/html/rfc7540#section-8.2

  6. "Google announces SPDY's coming demise as HTTP/2 approaches". Ars Technica. 2015-02-10. Retrieved 2023-07-30. https://arstechnica.com/information-technology/2015/02/google-announces-spdys-coming-demise-as-http2-approaches/

  7. "Changes with nginx 1.14.2". Nginx. 2018-12-04. Archived from the original on 2022-04-07. https://nginx.org/en/CHANGES-1.14

  8. Lassey, Brad (2020-11-12). "Intent to Remove: HTTP/2 and gQUIC server push". Blink mailing list. Retrieved 2023-11-20. https://groups.google.com/a/chromium.org/g/blink-dev/c/K3rYLvmQUBY/m/vOWBKZGoAQAJ

  9. "Removing HTTP/2 Server Push from Chrome". Chrome Developers. 2022-08-18. Retrieved 2023-07-30. https://developer.chrome.com/blog/removing-push/

  10. "Firefox 132.0, See All New Features, Updates and Fixes". Mozilla. Retrieved 2024-10-29. https://www.mozilla.org/en-US/firefox/132.0/releasenotes/

  11. "HTTP/1.1 vs HTTP/2: What's the Difference?". DigitalOcean. 2022-03-17. Retrieved 2023-11-20. https://www.digitalocean.com/community/tutorials/http-1-1-vs-http-2-what-s-the-difference

  12. "Introducing HTTP/2 Server Push with NGINX 1.13.9". Nginx. 2018-02-20. Retrieved 2023-11-20. https://www.nginx.com/blog/nginx-1-13-9-http2-server-push/

  13. "Announcing Support for HTTP/2 Server Push". 2016-04-28. Retrieved 2023-11-20. https://blog.cloudflare.com/announcing-support-for-http-2-server-push-2/

  14. "Changes with nginx 1.14.2". Nginx. 2018-12-04. Archived from the original on 2022-04-07. https://nginx.org/en/CHANGES-1.14

  15. "Changes with nginx 1.25.1". Nginx. 2023-06-13. Retrieved 2023-07-12. https://nginx.org/en/CHANGES

  16. "Page Optimization". LiteSpeed Documentation. Retrieved 2023-07-21. https://docs.litespeedtech.com/lscache/lscwp/pageopt/#css-http2-push

  17. "Intent to Remove: HTTP/2 and gQUIC server push". Google Groups. 2020-11-11. Archived from the original on 2021-11-28. Retrieved 2022-04-12. https://groups.google.com/a/chromium.org/g/blink-dev/c/K3rYLvmQUBY/m/vOWBKZGoAQAJ?pli=1

  18. "Removing HTTP/2 Server Push from Chrome". Chrome Developers. 2022-08-18. Retrieved 2023-07-30. https://developer.chrome.com/blog/removing-push/

  19. "Remove HTTP/2 push". chromestatus.com. 2022-10-31. Retrieved 2023-07-12. https://chromestatus.com/feature/6302414934114304

  20. "Intent to unship: HTTP/2 Push". groups.google.com. Retrieved 2024-09-06. https://groups.google.com/a/mozilla.org/g/dev-platform/c/vU9hJg343U8/m/4cZsHz7TAQAJ

  21. "Firefox Beta 132.0beta, See All New Features, Updates and Fixes". Mozilla. Retrieved 2024-10-01. https://www.mozilla.org/en-US/firefox/132.0beta/releasenotes/?utm_source=firefox-browser&utm_medium=firefox-desktop&utm_campaign=about-dialog