Web60 Features
WordPress Performance Stack: The Caching Layers Behind Every Fast Page Load

Every WordPress page load starts the same way. A customer clicks your URL. Their browser sends a request to your server. And somewhere between that click and the page appearing on their screen, a series of decisions happen that determine whether they see your content or give up and try someone else.
Most business owners assume speed is about their broadband connection or their WordPress theme. It is neither. The single biggest factor in how fast your site loads is what happens on the server in the fraction of a second between receiving the request and sending back the page.
That is what a performance stack does. It is the combination of technologies sitting between the visitor's click and the HTML arriving in their browser. Get it right, and pages load in under 200 milliseconds. Get it wrong, and you are asking every visitor to wait two, three, sometimes five seconds before they see anything at all.
As we covered in the complete WordPress performance guide for business owners, speed is a business decision, not a technical curiosity. This article goes deeper into the specific layers that make it happen and explains what each one actually does under the hood.
What Happens When Someone Visits Your Website
Before explaining the caching layers, it helps to understand the default request flow on a standard WordPress site with no performance optimisation.
A visitor types your URL or clicks a link. Their browser contacts your server. The web server receives the request and passes it to PHP. PHP loads WordPress core, your theme, and your active plugins. WordPress then makes database queries, anywhere between 20 and 50 per page load on a typical business site, to assemble the content. PHP builds the HTML page, sends it back to the web server, and the web server delivers it to the browser.
Every single visitor. Every single time. Twenty to fifty database queries per page load, all running from scratch.
On a quiet Tuesday morning, this works fine. During a traffic spike, it falls apart. Each visitor adds load. The database slows. PHP processes queue up. Pages that loaded in two seconds now take six. Some time out entirely.
That is the problem a performance stack solves. Three layers, each handling the traffic the previous layer cannot.
Layer One: Nginx FastCGI Page Cache
The most impactful layer in the entire stack. FastCGI page caching works on a simple principle: the fastest database query is the one that never runs.
When a visitor requests a page, Nginx checks whether it already has a pre-built HTML copy of that page stored in its cache. If it does, it serves that copy directly. PHP never runs. WordPress never loads. The database is never queried. The page goes from server to browser in the time it takes Nginx to read a file from disk.
The difference is not marginal. A cached page typically loads in under 200 milliseconds. An uncached page on the same server, running through the full PHP and MySQL chain, takes between 800 milliseconds and 3 seconds depending on complexity.
Research from Deloitte and Google's "Milliseconds Make Millions" study [1] found that improvements as small as a tenth of a second in load time lifted eCommerce conversion rates by somewhere between 8% and 10%, though results varied significantly by sector and site complexity. The point stands: milliseconds convert to money.
| Request Stage | Without Caching | With Full Performance Stack |
|---|---|---|
| Web server | Passes every request to PHP | Serves cached HTML directly |
| PHP processing | Runs WordPress on every visit | Skipped entirely for cached pages |
| Database queries | 20 to 50 queries per page load | Zero for cached pages |
| Typical response time | 800ms to 3 seconds | Under 200ms |
The practical consequence for a business owner: a visitor browsing your product catalogue on their phone during a lunch break sees the page before they have time to second-guess the click. That is not a technical nicety. That is the difference between a customer who stays and one who bounces.

Layer Two: Redis Object Cache
FastCGI page caching handles the majority of traffic brilliantly. But not every page can be cached as static HTML. Logged-in users, WooCommerce cart pages, personalised content, and search results all bypass the page cache because the content is different for each visitor.
When the page cache cannot help, Redis steps in.
Redis is an in-memory data store. Instead of WordPress querying MySQL for the same data over and over (your site settings, your menu structure, your product categories, your widget configuration), Redis stores those query results in RAM. Retrieval takes under a millisecond. The equivalent MySQL query, reading from disk, typically takes between 50 and 200 milliseconds depending on server load and query complexity.
That is, broadly speaking, somewhere between 50 and 200 times faster. Worth noting that these are single-environment benchmarks from Redis documentation [5] and real-world variation is significant, but the order of magnitude is consistent across most WordPress deployments we monitor.
For a WooCommerce site, this matters enormously. Every product page, every cart update, every checkout step involves database queries. Without Redis, a busy afternoon means the database is handling thousands of repetitive queries for the same product data and session information. With Redis, those results are served from memory almost instantly, and the database only gets queried when something actually changes.
I will admit this is the layer I underestimated early on. We onboarded a retailer running WooCommerce with around 800 products, and I assumed the page cache would handle most of the load. It did not. Product filtering, cart interactions, and logged-in customer accounts meant roughly 40% of their traffic bypassed the page cache entirely. Their database was working harder than it needed to. Enabling Redis dropped their dynamic page response times by more than half. Should have prioritised it from day one.
Layer Three: PHP-FPM Process Management
PHP-FPM (FastCGI Process Manager) is the least glamorous part of the stack. Nobody writes blog posts about it. It does not make individual pages faster. What it does is prevent your site from collapsing when multiple visitors arrive simultaneously.
Standard PHP handling creates a new process for every request. Under light traffic, that works. Under load, it becomes a problem. Each process consumes server memory. Too many processes and the server starts swapping to disk, which is orders of magnitude slower than RAM. At that point, every visitor gets a slow experience, or no page at all.
PHP-FPM manages a pool of PHP worker processes intelligently. It pre-spawns a set number of workers, reuses them across requests, and scales the pool based on demand. The configuration (how many workers, how they scale, when idle ones are recycled) is tuned to the server's available resources.
The consequence for you as a site owner is straightforward. When 50 people visit your site within the same minute, PHP-FPM handles them methodically. Without it, those 50 concurrent visitors are 50 processes competing for the same resources, and the last ten in the queue are watching a loading spinner while the server catches its breath.
How the Stack Performs Under Pressure
The three layers are not independent features bolted onto a server. They work as a coordinated stack, each handling the traffic the previous layer cannot.
Nginx FastCGI page cache handles the bulk of requests, typically between 60% and 80% of all traffic on a standard business site. These are your homepage, your about page, your service pages, your blog posts. All the content that looks the same for every visitor.
Redis object cache handles the dynamic requests that bypass the page cache. Logged-in users, WooCommerce interactions, search queries, admin dashboard activity. It ensures these requests are still fast even though they cannot be served from a static HTML file.
PHP-FPM manages the underlying process handling for everything requiring PHP execution, keeping the server stable and responsive under load rather than letting traffic spikes cascade into failures.
The result: a site that responds in under 200 milliseconds for most visitors, stays fast under traffic spikes, and does not degrade when your shop gets busy on a Saturday afternoon.
This is the stack that runs on Web60's enterprise-grade Irish infrastructure. Nginx, Redis, PHP-FPM, configured and managed as part of the service. It is the same technology stack that enterprise managed hosts charge premium rates for. The difference is that Web60 handles the configuration and tuning while you handle your business, all included in the EUR60 per year price.
What Happens Without a Performance Stack
It helps to understand what this stack prevents, because the alternative is more common than most business owners realise.
Picture a typical shared hosting setup. Apache web server, no page caching, no Redis, PHP running in its default configuration. The hosting company puts 200 websites on the same server because the margins demand it.
Your site gets mentioned on local radio. Or a social media post picks up traction. Or you run a Google Ads campaign that actually works. Traffic jumps from your usual 30 visitors a day to 300 in an hour.
Every one of those visitors triggers the full request chain. PHP loads WordPress from scratch. Twenty to fifty database queries per page. The database starts queuing. PHP processes pile up. Memory runs out. Page load times climb from 2 seconds to 8, then to 15, then the connection times out entirely.
Google's mobile speed research [2] found that roughly half of mobile users abandon a page taking longer than 3 seconds. Portent's research [3] puts the conversion cost at somewhere around 4% to 5% per additional second of load time, though that varies by industry and sample. The exact percentage matters less than the pattern: your best marketing day becomes your worst website day, because the infrastructure underneath cannot absorb the traffic your marketing generated.
Google now scores your entire website on speed, not just individual pages. One slow page drags down the performance assessment for your whole site. When the hosting infrastructure cannot handle basic traffic fluctuations, every page suffers in the rankings.

The Caching Limitations Worth Knowing
Caching is not magic, and pretending otherwise would be dishonest. There are real limitations worth understanding before you rely on it.
Stale content is the most common gotcha. When you update a page, the cached version still exists until the cache expires or is purged. On a properly managed stack, cache purging happens automatically when you publish or update content in WordPress. But if you make changes directly to the database, or a plugin modifies content outside the normal WordPress workflow, the cache may serve the old version until the next purge cycle. If you update your prices at 2pm and a customer sees the old prices at 2:05pm, that is caching doing exactly what it is designed to do: serving the version it has. The fix is a manual cache flush, which takes seconds, but you need to know it exists.
Logged-in users bypass the page cache by design. If you run a membership site or a customer portal where most visitors are logged in, the page cache handles a smaller proportion of your traffic. Redis picks up the slack, but your dynamic page performance matters more in that scenario.
Aggressive caching and WooCommerce carts require careful configuration. Cache the wrong pages and a customer sees someone else's cart contents. This is a configuration problem, not a fundamental flaw, but it is real enough that it needs mentioning. Properly configured exclusion rules prevent it entirely. "Properly configured" is doing a lot of work in that sentence though. This is one reason managed hosting exists: you should not have to think about cache exclusion rules for your checkout flow.
For businesses running complex WordPress multisite networks with custom caching requirements, or WooCommerce operations processing thousands of orders daily with custom middleware, enterprise-tier managed hosts offer granular cache rule configuration that suits those specific workflows. That is a genuine advantage at scale. But if you are running a business site with a product catalogue and a contact form, you do not need a granular cache rule editor. You need a stack that works properly out of the box.
Where the Stakes Are Highest
Not every business experiences the impact of hosting infrastructure equally. For this kind of infrastructure topic, it is worth being specific.
- Online retailers and WooCommerce shops: Every product page, cart interaction, and checkout step involves database queries. Slow responses during a busy period mean abandoned carts and lost revenue. A craft brewery in Kilkenny selling seasonal gift boxes online feels this during the November rush when traffic and transactions spike together.
- Lead generation and professional services: Your website's job is to convert visitors into enquiries. If the contact page takes four seconds to load after someone reads your case study, you have already lost them. The Deloitte and Google research [1] is clear on this: conversion rates drop measurably with every additional fraction of a second.
- Content-heavy sites with blogs: Google's site-wide speed scoring means slow blog archive pages affect the ranking of your high-value service pages. Chrome UX Report data [4] shows that fewer than half of WordPress sites on mobile pass all three Core Web Vitals thresholds. The performance of every page matters, not just the homepage.
Conclusion
The technology that makes a WordPress site fast is not complicated in concept. Three layers, each handling a different type of traffic, each preventing the layer behind it from being overwhelmed. Nginx serves pre-built pages. Redis serves cached database results. PHP-FPM manages the processes that handle everything else.
The complexity is in the configuration, the tuning, and the ongoing maintenance. Getting cache exclusion rules right for WooCommerce. Sizing Redis memory allocation for a specific workload. Tuning PHP-FPM worker counts for the server's available resources. That is operations work, and it is the difference between hosting infrastructure and a server with WordPress installed on it.
The question for any business owner is not whether caching matters. It does. The question is whether you want to manage these layers yourself or whether you want hosting that handles them while you focus on what your business actually does.
Frequently Asked Questions
What is a WordPress performance stack?
A performance stack is the combination of server technologies that sit between a visitor's click and the page loading in their browser. For WordPress, a proper stack typically includes Nginx as the web server, FastCGI page caching, Redis object caching, and PHP-FPM process management. These layers work together to serve pages as fast as possible while keeping the site stable under traffic.
Do I need to configure caching myself on managed hosting?
On properly managed WordPress hosting, no. The hosting provider configures and maintains the caching layers as part of the service. That includes setting cache exclusion rules for dynamic pages like WooCommerce carts and checkout, managing cache purging when you update content, and tuning the configuration for your workload. If your host expects you to install and configure caching plugins yourself, that is shared hosting with a "managed" label.
Will caching cause problems with my WooCommerce shop?
Not if configured correctly. Properly managed hosting excludes dynamic pages (cart, checkout, account pages) from the page cache automatically. Redis handles the database caching for these dynamic interactions instead. The risk only arises when caching is misconfigured, which is exactly why this is a hosting infrastructure concern rather than a plugin decision.
How can I tell if my website caching is working?
The simplest test is your page load time. If pages consistently load in under half a second for first-time visitors, your caching is likely working. You can verify using Google PageSpeed Insights or Chrome DevTools, which show server response time (TTFB). A cached page typically shows TTFB under 200 milliseconds. An uncached WordPress page on shared hosting typically shows 800 milliseconds or more.
Does a performance stack replace WordPress caching plugins?
Yes, it replaces them and outperforms them. Server-level caching (Nginx FastCGI, Redis) operates at a layer below WordPress, which means it handles requests before WordPress even loads. Plugin-based caching (WP Super Cache, W3 Total Cache) runs inside WordPress, so PHP still loads on every request. Server-level caching is faster by design because it skips the entire WordPress loading process for cached pages.
Sources
Ian oversees Web60's hosting infrastructure and operations. Responsible for the uptime, security, and performance of every site on the platform, he writes about the operational reality of keeping Irish business websites fast, secure, and online around the clock.
More by Ian O'Reilly →Ready to get your business online?
Describe your business. AI builds your website in 60 seconds.
Build My Website Free →More from the blog
"My Host Handles Backups" Is the Most Dangerous Myth in WordPress Hosting
Most hosting providers disclaim backup responsibility in their terms. Here is what that fine print means for your WordPress site and your business.
You Can Build a Professional Business Website in 60 Seconds. No, Really.
AI website builders let any business owner create a professional WordPress site in under a minute. No coding, no designer, everything included for €60 a year.
