WordPress powers over 40% of the web, but its flexibility comes at a cost. Plugin bloat, unoptimised databases, and poor hosting choices can turn a snappy site into a frustrating experience. At Born Digital, we have rescued countless WordPress sites from poor performance. Here are the techniques that consistently deliver the biggest improvements.
Caching: The Single Biggest Win
WordPress generates pages dynamically by querying the database and executing PHP on every request. Page caching eliminates this overhead by serving pre-built HTML files to visitors. A well-configured caching layer can reduce server response times from 800ms to under 50ms.
Implement caching at multiple levels for maximum impact:
- Page caching: Use WP Super Cache, W3 Total Cache, or WP Rocket to serve static HTML. For high-traffic sites, server-level caching with NGINX FastCGI cache or Varnish outperforms plugin-based solutions.
- Object caching: Redis or Memcached stores frequently accessed database queries in memory, reducing database load by 50-70% on content-heavy sites.
- CDN caching: Cloudflare or similar CDNs cache your static assets at edge locations worldwide, reducing latency for international visitors. For Malta-based businesses serving European customers, this is essential.
- Browser caching: Set appropriate cache headers for static assets so returning visitors load resources from their local cache rather than your server.
Database Optimisation
Over time, WordPress databases accumulate post revisions, spam comments, transient options, and orphaned metadata. A site running for two years can easily have a database three to five times larger than necessary. Run regular cleanups using WP-Optimize or similar tools to remove post revisions beyond a set limit, clear expired transients, and optimise table overhead.
Beyond cleanup, examine your slow queries. Enable the SAVEQUERIES constant in development to identify plugins making excessive or unindexed database queries. The Query Monitor plugin provides a detailed breakdown of every query on each page load, making it straightforward to identify bottlenecks.
Image and Asset Optimisation
Images typically account for 50-80% of a WordPress page's total weight. Serve images in WebP or AVIF format using plugins like ShortPixel or Imagify, which can convert and compress images automatically on upload. Enable lazy loading for below-the-fold images — WordPress includes native lazy loading since version 5.5, but ensure it is not applied to above-the-fold hero images where it would delay the Largest Contentful Paint.
For CSS and JavaScript, minify and combine files where possible. Remove unused CSS from theme frameworks — many WordPress themes ship with extensive CSS libraries where only 20-30% is actually used. Tools like PurgeCSS can strip unused styles during build, sometimes reducing stylesheet size by 80% or more.
Plugin Audit and Reduction
Every active plugin adds PHP execution time, potential database queries, and often additional CSS and JavaScript files. We routinely encounter WordPress sites running 40 or more plugins when 15 would suffice. Audit your plugins quarterly. For each one, ask whether it provides genuine value, whether its functionality could be achieved with a few lines of custom code, and whether it loads assets on pages where it is not needed.
Use asset management plugins to conditionally load plugin scripts and styles only on the pages where they are actually used. A contact form plugin, for example, should only load its JavaScript on the contact page, not across your entire site.
Hosting and Server Configuration
No amount of optimisation can compensate for poor hosting. Shared hosting plans that cram hundreds of sites onto a single server will always be slow under load. For business-critical WordPress sites, we recommend managed WordPress hosting providers or a properly configured VPS with NGINX, PHP 8.2+, and OPcache enabled.
Ensure your PHP version is current. PHP 8.2 is roughly three times faster than PHP 7.0 for WordPress workloads. Enable OPcache to store precompiled PHP bytecode in memory, eliminating the need to parse and compile PHP files on every request. These server-level changes often deliver more significant improvements than any single plugin or code optimisation.