Blog
PerformanceWordPress

Core Web Vitals for WordPress: What Your Host Actually Controls

Which Core Web Vitals signals depend on server configuration and which rely on frontend work. Learn where TrueCore Hosting can help and where it cannot.

You opened PageSpeed Insights, clicked "Run Test", and watched the red bar appear under Largest Contentful Paint (LCP). The report then listed Interaction to Next Paint (INP) and Cumulative Layout Shift (CLS) as "needs improvement". You wonder how much of that can be fixed by switching to a faster host.

The short answer is: a host can only affect the metrics that are generated on the server. Anything that depends on what the browser actually renders stays outside the host's control. Below we separate the Core Web Vitals signals, point out where TrueCore Hosting makes a difference, and show what you still need to handle in WordPress itself.

Server-side signals you can influence

Time to First Byte (TTFB)

TTFB measures the interval from the moment the browser sends a request to the moment it receives the first byte of the response. It is a pure server metric: network latency, DNS lookup, and server processing all contribute.

TrueCore runs nginx 1.28 as a front-end reverse proxy. When a page is cached, nginx serves a static HTML file directly, cutting PHP processing out of the loop. In that case we often see TTFB in the 5-20 ms range. For uncached pages, PHP-FPM 8.3 processes the request, then hands the HTML to nginx. Our per-site pod-nginx processes keep each site isolated, preventing one busy site from slowing another. * The underlying OS is Alpine 3.23.4 with a recent Linux kernel (6.18.x). The kernel-enforced resource limits stop runaway CPU usage, keeping the server responsive.

You can verify TTFB yourself:

curl -w "TTFB: %{time_starttransfer}s\n" -o /dev/null -s https://example.com

If the number stays above 300 ms even after page caching is enabled, the bottleneck is likely I/O or CPU saturation on the host. Upgrading from the Flameling (£10/mo) to the Ember (£20/mo) plan grants more reserved CPU and I/O units on the same node, which — along with PHP-FPM and a per-customer PostgreSQL database that Flameling's static-only hosting does not include — often improves TTFB for dynamic sites.

Server Response Headers

Headers such as Cache-Control, Vary, and Content-Encoding are set before the browser even starts rendering. They influence how long the browser keeps a resource and whether it can use compression.

Our flame-dnsd daemon updates DNS records within five seconds, ensuring that CDN or edge-cache lookups hit the correct IP fast. The built-in flame-guardian firewall (XDP + nftables) drops abusive traffic at the packet level before it reaches your site, keeping the server responsive for real visitors. It does not modify HTTP responses. * The default nginx configuration includes gzip on; and a Cache-Control: public, max-age=3600 for static assets, which reduces payload size and speeds up subsequent loads.

You can inspect headers with:

curl -I https://example.com

If you see Cache-Control: private, max-age=0 on every request, WordPress is likely disabling caching at the application level. Adjust the caching plugin or the wp-config.php constants to let nginx handle it.

Client-side signals the host cannot fix

Largest Contentful Paint (LCP)

LCP records the time when the largest text block or image element becomes visible. It depends on image dimensions, file size, and layout order.

Cumulative Layout Shift (CLS)

CLS measures unexpected movement of page elements during load. It is caused by late-loading fonts, ad slots that expand, or images without defined dimensions.

Interaction to Next Paint (INP)

INP measures how quickly the page responds across all of a user's interactions, from the input to the next frame the browser paints. It is caused by heavy JavaScript execution on the main thread. (INP replaced First Input Delay as a Core Web Vital in 2024.)

In short, the three metrics that truly matter for Core Web Vitals—LCP, CLS, and INP—are largely under your control inside WordPress. The host supplies the delivery pipe; if the pipe is clear, the browser still has to do the heavy lifting.

Practical steps to align your host with Core Web Vitals

  1. Enable page caching - Install a plugin that writes static HTML to disk. TrueCore's nginx will then serve that file in under 20 ms.
  2. Verify TTFB - Use the curl command above after caching is active. If you see 5-20 ms, the server side is ready.
  3. Serve compressed assets - Confirm that Content-Encoding: gzip appears in the response headers. If not, add gzip on; to the nginx snippet in your panel.
  4. Set proper cache headers - In the WordPress cache plugin, set a Cache-Control: public, max-age=3600 for images, CSS, and JS.
  5. Offload images - Store large media on a CDN or use WordPress's built-in "media library" optimisation. This directly improves LCP.
  6. Audit layout shifts - Run the Chrome Lighthouse audit, note any CLS warnings, then edit the offending theme files. The host does not intervene here.
  7. Trim JavaScript - Use a minifier or defer attribute. Again, the host only ensures the compressed file reaches the browser quickly.

When every step above is checked, you should see Core Web Vitals scores move from "needs improvement" to "good" in most cases. If the scores stay low despite a fast TTFB and correct headers, the problem is almost certainly with the front-end assets or with a heavy plugin that blocks rendering.

Remember: a host can give you a fast, reliable pipe, but the content inside that pipe still needs optimisation. TrueCore provides the pipe at a price that scales with your site's needs—whether you are on Flameling for a single static site or Inferno for a small agency portfolio. Use the tools we give you, and keep the WordPress side tidy. The result is a site that loads quickly for visitors and scores well on the metrics that matter most.

Ready for hosting that doesn't oversell?

Get started from £10/mo More articles
Stay in the loop New posts, platform updates, and open chat — join the community.
Join Discord