Official statement
Other statements from this video 21 ▾
- 2:06 Does mobile speed really determine your Google ranking?
- 2:12 Is mobile speed truly a decisive Google ranking factor?
- 4:19 Should you really panic if your site takes more than 3 seconds to load?
- 4:19 Are you losing half of your visitors before they even see your content?
- 5:37 Is a Speed Index under 5 seconds really enough to ensure good perceived performance?
- 5:42 Is the speed index really Google's key metric for mobile performance?
- 9:56 Why do CSS and JavaScript really block the initial display of your pages?
- 10:11 Should you really optimize the critical render path to boost speed?
- 15:29 Async or defer: which JavaScript strategy truly optimizes your crawl budget?
- 20:21 Is it really necessary to load CSS asynchronously to enhance critical rendering?
- 25:29 Why has srcset become essential for mobile SEO?
- 28:48 How much can you compress images without hurting your SEO?
- 30:00 Does lazy loading really enhance load times and SEO?
- 30:50 Should you really enable lazy loading on all your images to enhance SEO?
- 41:00 Why does Google emphasize 3G and multiple tests when using WebPageTest?
- 44:25 Do JavaScript frameworks really sabotage your mobile performance?
- 46:18 Does HTTP/2 server push really cut requests for improved SEO?
- 48:17 Does browser caching really boost your ranking on Google?
- 50:19 Should you really remove half of your WordPress plugins for SEO?
- 52:12 Does AMP really enhance your SEO performance or is it a technical trap?
- 52:43 Does AMP Really Boost Your Site's Speed or Is It Just a Technical Trap?
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.