Official statement
Other statements from this video 21 ▾
- 2:06 La vitesse mobile détermine-t-elle vraiment votre classement Google ?
- 2:12 La vitesse mobile est-elle vraiment un critère de classement Google décisif ?
- 4:19 Faut-il vraiment paniquer si votre site charge en plus de 3 secondes ?
- 4:19 Pourquoi perdez-vous la moitié de vos visiteurs avant même qu'ils ne voient votre contenu ?
- 5:37 Le Speed Index sous 5 secondes : suffit-il vraiment à garantir une bonne performance perçue ?
- 5:42 L'indice de vitesse est-il vraiment la métrique clé de Google pour le mobile ?
- 9:56 Pourquoi le CSS et le JavaScript bloquent-ils vraiment le premier affichage de vos pages ?
- 10:11 Faut-il vraiment optimiser le chemin de rendu critique pour gagner en vitesse ?
- 15:29 Async ou defer : quelle stratégie JavaScript maximise réellement votre crawl budget ?
- 20:21 Faut-il vraiment charger le CSS de manière asynchrone pour améliorer le rendu critique ?
- 25:29 Pourquoi srcset est-il devenu incontournable pour le SEO mobile ?
- 28:48 Jusqu'où peut-on compresser les images sans perdre en SEO ?
- 30:00 Le lazy loading des images améliore-t-il vraiment le temps de chargement et le SEO ?
- 30:50 Faut-il vraiment activer le lazy loading sur toutes vos images pour améliorer le SEO ?
- 41:00 WebPageTest : pourquoi Google insiste-t-il sur la 3G et les tests multiples ?
- 44:25 Les frameworks JavaScript sabotent-ils vraiment vos performances mobiles ?
- 46:18 HTTP/2 server push réduit-il vraiment les requêtes pour améliorer votre SEO ?
- 48:17 Le cache navigateur améliore-t-il vraiment le classement dans Google ?
- 50:19 Faut-il vraiment supprimer la moitié de vos plugins WordPress pour le SEO ?
- 52:12 AMP améliore-t-il vraiment vos performances SEO ou est-ce un piège technique ?
- 52:43 AMP améliore-t-il vraiment la vitesse de votre site ou est-ce un piège technique ?
Google highlights HTTP/2 server push as a solution to reduce the number of requests and speed up loading times. In practice, this feature can indeed send resources before they're requested by the browser. The crucial question remains whether the actual gains justify the complexity of implementation, as poorly configured server push can also degrade performance.
What you need to understand
What is HTTP/2 server push and how does it differ from HTTP/1.1?
HTTP/2 introduces a revolutionary change in how the server communicates with the client. Unlike HTTP/1.1, where each resource (CSS, JS, images) requires a separate request from the browser, HTTP/2 server push enables the server to proactively send files it knows will be needed before the browser requests them.
This anticipation is based on analyzing the main HTML. When the server sends the page, it can already push the critical stylesheet or the main JavaScript file. The browser receives these resources in the same multiplexed stream, without waiting for a new request-response cycle.
How does this feature actually reduce the number of requests?
The theoretical gain is straightforward: instead of an HTML request cycle → HTML response → parsing → resource discovery → new CSS/JS requests, the server bypasses the intermediate steps. It sends HTML + critical resources simultaneously, reducing network round trips.
For a site with 5 CSS files and 3 critical scripts, you can potentially go from 9 sequential requests (1 HTML + 8 assets) to a single multiplexed connection where everything arrives in parallel. Total latency decreases, especially on high-latency connections (3G, 4G, international connections).
Which files should be prioritized for pushing with server push?
The logic dictates that only critical resources should be pushed: those that block initial rendering or are essential for First Contentful Paint. Typically, the main CSS, the fonts declared in that CSS, and possibly a lightweight initialization script.
Pushing too many resources or files already cached on the client side negates the benefits. The browser then receives unnecessary data, consuming bandwidth and potentially slowing down loading instead of speeding it up. Selectivity is crucial.
- Server push sends resources before they are requested, reducing network latency.
- Works through HTTP/2 multiplexing, multiple streams in a single TCP connection.
- Ideal targets: critical CSS, fonts, lightweight blocking scripts.
- Risk of waste if pushing files already cached or non-critical.
- Requires precise server configuration (Link preload headers or application logic).
SEO Expert opinion
Is this feature really beneficial in real-world conditions?
To be honest, server push has been largely overhyped since the launch of HTTP/2. Early benchmarks showed spectacular gains in controlled environments, but real-world usage revealed serious limits. The main issue? The server does not know the state of the browser cache. It may push resources that the client already has.
Several studies (notably from KeyCDN and Cloudflare) have shown that if misconfigured, server push can degrade performance by 10 to 30%. Actual gains materialize only on high-latency connections, for first-time visitors, and only if the number of pushed resources remains under control (2 to 4 files maximum). [To verify] on your own data through A/B testing comparing enabled push vs. classic preload.
What alternatives offer a better effort/results ratio?
Preload via the Link header or the tag provides finer control and avoids the risk of pushing files already cached. The browser discovers the resource early in the HTML parsing and triggers high-priority downloads but respects its own cache.
In practical terms? Preload has become the standard recommendation among most performance engineers. It combines early discovery of critical resources without the drawbacks of server push. Some CDNs (Fastly, Cloudflare) have even disabled server push by default in favor of intelligent preload based on cache heuristics.
When does server push retain strategic interest?
For web applications where server control is total and where precise tracking of the state of the client cache can be done (via cookies or sessions), server push remains relevant. Typically: administration dashboards, authenticated SaaS applications, where it is known exactly which resources the client has.
For a standard public website with anonymous visitors and unknown browser cache, the equation does not hold. The risk of unnecessary pushing outweighs the marginal gains. If your infrastructure does not allow for a conditional push logic (based on cookies or session recognition), forget server push and focus on preload + well-configured CDN.
Practical impact and recommendations
How to properly activate and configure server push?
If your server is running under Apache with mod_http2, you can declare the resources to push via the HTTP Link header with the push parameter. Example in .htaccess or VirtualHost config: Header add Link "</style.css>; rel=preload; as=style; nopush" (use nopush to disable push for this resource, or remove it to enable).
Under Nginx with ngx_http_v2_module, the http2_push directive allows specifying the URIs to push. Caution: Nginx systematically pushes without checking the client cache, hence the importance of limiting the list. Example: http2_push /css/main.css; http2_push /js/app.js; within the location block.
What mistakes should be avoided during server push implementation?
The first common mistake: pushing too many files. Beyond 3-4 resources, you saturate the initial connection and delay the HTML itself. The browser waits to receive all the pushed data before starting rendering, which nullifies any benefits.
The second trap: pushing large or non-critical resources. If you push a 200 KB font or a secondary analytics script, you waste bandwidth on elements that do not block rendering. Prioritize only what impacts First Contentful Paint and Largest Contentful Paint.
How to measure the real impact of server push on your Core Web Vitals?
Set up an A/B test with two versions: one with server push enabled on 2-3 critical resources, one with classic preload. Measure LCP, FCP, and TTFB via RUM (Real User Monitoring) on a significant sample of real visitors (minimum 1000 sessions per variant).
Analyze the results segmented by connection type (3G, 4G, fiber) and by visitor status (new vs. recurring). If the delta for LCP remains under 50 ms or recurrent visitors experience degradation, disable server push. Marginal gains do not justify added complexity.
- Enable HTTP/2 on your server (Apache mod_http2, Nginx http2, Caddy native).
- Identify a maximum of 2-3 critical resources (main CSS, critical fonts).
- Configure server push via Link headers or specific server directives.
- Test in real conditions with both empty AND full browser cache.
- Measure LCP and FCP before/after via WebPageTest and RUM.
- Compare with a preload alternative to validate the overall gain.
❓ Frequently Asked Questions
HTTP/2 server push est-il encore pertinent après le retrait du support natif dans Chrome ?
Peut-on pousser des ressources hébergées sur un CDN externe via server push ?
Quelle différence entre server push et preload en termes d'impact SEO ?
Comment savoir si mon serveur supporte HTTP/2 et server push ?
Faut-il pousser les fonts web avec server push pour améliorer le LCP ?
🎥 From the same video 21
Other SEO insights extracted from this same Google Search Central video · duration 54 min · published on 25/01/2018
🎥 Watch the full video on YouTube →
💬 Comments (0)
Be the first to comment.