Skip to content
M MYKHALCHENKO.consulting
WordPress SEO Performance Web Development

WordPress Speed Optimisation & SEO

Performance audit and SEO baseline for a construction firm's WordPress site. Page load time cut from 8.4s to 1.2s. The site now ranks for the terms the client's customers actually search.

2025
Construction Firm, Central Switzerland
Web Developer & SEO Consultant

The Situation

A construction firm had a WordPress site that was technically functional but practically invisible. Load time on mobile was 8.4 seconds. The Lighthouse performance score was 31. The site had no meta descriptions, no structured data, and title tags that were either missing or duplicated across pages.

The firm had been in business for over 20 years and had a strong local reputation. None of that reputation was visible online. Searching for their core services in their region returned competitors who had invested in basic SEO — the firm didn’t appear until page three or four.

What I Did

Performance audit. I started with a full audit using Lighthouse, PageSpeed Insights, and GTmetrix to identify every bottleneck. The main issues were uncompressed images (a single project gallery page was loading 14MB of unoptimised JPEGs), no browser caching configuration, render-blocking JavaScript from unused plugins, and a shared hosting environment with no CDN.

Image optimisation. Every image on the site was processed through a compression pipeline — WebP conversion for modern browsers with JPEG fallback, lazy loading for below-the-fold images, and proper width and height attributes to eliminate layout shift. The project gallery went from 14MB to 1.1MB with no visible quality loss.

Plugin audit and cleanup. The site had 23 active plugins, seven of which were unused or redundant. I deactivated and removed them, reducing the JavaScript payload by 340KB. Two remaining plugins that were loading scripts site-wide were reconfigured to load only on the pages that needed them.

Caching and CDN. I configured WP Rocket for server-side and browser caching, enabled GZIP compression, and moved static assets to Cloudflare’s CDN. Time to first byte dropped from 1.8s to 210ms.

Technical SEO baseline. Every page received a unique, descriptive title tag and meta description written around actual search terms. I installed and configured Yoast SEO, submitted an XML sitemap to Google Search Console, and fixed 47 crawl errors that had been silently accumulating for years.

Structured data. I added LocalBusiness schema with the firm’s address, service area, and contact details. This data feeds directly into how Google presents the business in local search results and knowledge panels.

Results — Three Months Later

  • Mobile load time: 8.4s → 1.2s
  • Lighthouse performance score: 31 → 89
  • Google Search Console: crawl errors resolved from 47 → 0
  • Organic clicks (90-day period): +210%
  • Rankings for primary service keywords: page 3–4 → page 1
  • Hosting cost unchanged — all improvements made within existing infrastructure

The firm now appears on page one for their three most important service terms in their region. No advertising budget was added. The improvement came entirely from removing technical barriers that were preventing Google from indexing and ranking the site correctly.

What Made the Difference

Construction firms often have strong offline reputations that don’t translate online because nobody has done the basic technical work. The site wasn’t bad — it was just misconfigured and overloaded.

Speed is the most immediate factor. Google’s Core Web Vitals are a direct ranking signal, and an 8-second mobile load time is an automatic penalty. Once the load time was under 1.5 seconds, the site became eligible to compete for rankings it was previously excluded from.

The structured data and title tag work gave Google the context to understand what the business does and where it operates. Before the optimisation, several pages had identical or missing title tags — from Google’s perspective, the site didn’t have clearly differentiated pages. After the fix, each page was indexable, understandable, and rankable on its own terms.