80% of slow WordPress sites are not slow because of hosting — they are slow because of wrong settings, bad plugins and bloated themes. Before you pay 3x for a VPS, do these 12 steps first. In over 90% of cases shared hosting is enough — and Google loves your site again.
Measure first, then fix
Before making any change, take a baseline measurement so you know where you are and can compare:
- PageSpeed Insights (pagespeed.web.dev) — Mobile score is what SEO cares about
- WebPageTest for detailed waterfall
- Query Monitor plugin to find which DB queries kill every page load
Step 1 — Kill unnecessary plugins (the biggest win)
Every plugin is PHP code that runs on every request. We've seen sites with 45 active plugins actively using 8. Rule of thumb:
- If you don't know what a plugin does — deactivate and watch for 24 hours.
- If 3 plugins do overlapping work (e.g. 2 SEO plugins) — keep 1.
- If an "all-in-one" alternative exists for 5 of your plugins — consider it, but never just to reduce the count.
Step 2 — Upgrade PHP to 8.2+
PHP 8.2 is 30-40% faster than 7.4 under typical WordPress load. On AlphaServer Plesk hosting you change PHP version with a dropdown. On other providers:
- cPanel: MultiPHP Manager → select PHP 8.2
- Plesk: Domain → PHP Settings → PHP 8.2
Before switching, test on staging. Some old themes/plugins are incompatible.
Step 3 — Enable OPcache + object cache
OPcache speeds up PHP execution. It's on by default on serious shared hosting (including ours).
Object cache (Redis or Memcached) is often NOT on by default on shared. If your provider supports it, install Object Cache Pro or the free Redis Object Cache plugin and enable it.
In our tests: a heavy WooCommerce site dropped TTFB from 800ms to 180ms just by enabling object cache.
Step 4 — Page cache (mandatory)
Without page cache, every request runs the full PHP/MySQL stack. With page cache, you serve pre-rendered HTML.
Plesk also has Smart CDN that works without a plugin. On cPanel try LSCache if you have LiteSpeed.
Step 5 — Optimize images (LCP killer)
Images are the #1 cause of slow LCP. Three things:
- WebP/AVIF format — Smush, ShortPixel, Imagify auto-convert
- Correct size — don't serve a 3000x2000 image for a 400x300 thumbnail
- Lazy loading — on by default in WP 5.5+, but NOT for the hero image (add
fetchpriority="high")
Step 6 — Critical CSS & async fonts
Render-blocking CSS is the second big issue:
- Plugins like Autoptimize or WP Rocket extract critical CSS and defer the rest
- Google Fonts: self-host them locally or use
rel="preload" as="font" - Add
font-display: swapto every @font-face
Step 7 — Minify and combine
"Combine all CSS/JS into one file" no longer applies with HTTP/2 (many parallel requests are cheap). But minify does — Autoptimize does it in 1 click.
Step 8 — Defer JavaScript
Every <script src=...> without defer/async blocks rendering. Goal: 0 blocking scripts in head. Plugins that handle this automatically: Autoptimize, Flying Scripts, WP Rocket.
Watch out for chat widgets/analytics: these are the heaviest. Use "delay until interaction" (Flying Scripts does it) — load chat only when the user moves the mouse/touches the screen.
Step 9 — Add a CDN
A CDN serves static assets from the closest server to the user. For Greece:
- Cloudflare Free — the right second step after caching. Free, easy setup.
- BunnyCDN — €1/month for small sites, faster in EU
- KeyCDN — pay-as-you-go
Cloudflare Free also gives you WAF and DDoS protection. No-brainer.
Step 10 — Clean up the database
WP autosaves, revisions, trashed comments, transients — they pile up and slow the database. Plugins:
- WP-Optimize — cleanup + optimize tables
- Advanced Database Cleaner — more granular
Limit revisions to 3-5: define('WP_POST_REVISIONS', 5); in wp-config.php.
Step 11 — Disable heartbeat & XML-RPC
Two "hidden" CPU eaters:
- Heartbeat API: admin-ajax.php every 15s. "Heartbeat Control" plugin → set to 60s or disable on frontend.
- XML-RPC: if you don't use Jetpack or mobile apps, disable it. Target for brute-force attacks.
Step 12 — Monitor Core Web Vitals continuously
After all the above, set up monitoring:
- Google Search Console → Core Web Vitals report (free)
- PageSpeed API cron → weekly snapshots
- Uptime monitoring (UptimeRobot free for 5 sites)
When you actually need a VPS
If you've done all of the above and:
- TTFB > 400ms consistently (even with cache)
- You have > 10k unique visitors/day
- You run WooCommerce with 500+ products
- You need custom extensions or server control
Then yes, it's time for a managed VPS. Otherwise stay on shared and optimize.
Bottom line
Fast WordPress isn't about hardware — it's about correct configuration. With proper page cache, object cache, right images and CDN, shared hosting passes Core Web Vitals without issue.
If you want hosting that ships with Plesk, OPcache tuning and WordPress Toolkit for 1-click optimizations, see our plans or message us for a free performance audit of your existing site.
WordPress Hosting that runs fast from day one
Plesk + WordPress Toolkit + PHP 8.2 + OPcache + daily backups — from €3/month.