⚡ Performance Engineering

Magento 2 Speed Optimization and Core Web Vitals

A slow Magento store loses sales and search visibility. We find out exactly why your pages are slow — server, cache, database, theme or third-party scripts — and fix the causes in order of impact, measured with real-user Core Web Vitals rather than a single Lighthouse run.

≤ 2.5sLCP target
(Google "good")
≤ 200msINP target
for interactions
≤ 0.1CLS target
for layout shift
TTFBServer response
tuned first

Why Magento Stores Become Slow

Magento is fast when it is configured correctly and slow when it is not. The most common causes we find are full-page cache misses (Varnish not configured, or blocks that make pages uncacheable), cache and sessions stored on disk instead of Valkey or Redis, indexers set to "Update on Save", heavy cron jobs and slow database queries from extensions.

On the frontend, Luma's RequireJS and Knockout.js stack, large unoptimised images, web fonts and third-party tags such as chat, reviews and marketing pixels delay rendering and make interactions sluggish. Since March 2024, Google measures responsiveness with Interaction to Next Paint (INP), which is often where Luma stores struggle most on mobile.

We profile both sides, fix the biggest problems first and confirm the improvement with field data from the Chrome UX Report and your own monitoring.

VarnishFastlyValkey / RedisOpenSearchMySQL 8.4PHP 8.4 OPcacheHyväWebP / AVIFNew RelicBlackfire
Core Web Vitals thresholds (75th percentile)
  • ✓LCP — Largest Contentful Paint — good at 2.5 s or less
  • ✓INP — Interaction to Next Paint — good at 200 ms or less
  • ✓CLS — Cumulative Layout Shift — good at 0.1 or less
  • ✓TTFB — Not a Core Web Vital, but a slow server delays everything
  • ✓Field data — Measured from real Chrome users over 28 days
  • ✓Lab data — Lighthouse helps diagnose, but does not decide rankings

Magento Performance Services

Server-side and frontend work, prioritised by measured impact.

🗄️

Full-Page Cache

Varnish or Fastly configured with the Magento VCL, cache-busting blocks found and fixed, and hit rate monitored.

  • ✓Uncacheable blocks removed
  • ✓Correct cache tags and TTLs
  • ✓Cache warming after deploys
📦

Valkey / Redis

Separate instances for cache, full-page cache and sessions, with eviction policies and compression tuned.

  • ✓Session locking settings
  • ✓L2 cache where useful
  • ✓Memory sizing
🧮

Database & Indexing

Slow query analysis, MySQL 8.4 or MariaDB tuning, indexers on "Update by Schedule" and cron health.

  • ✓Slow query log review
  • ✓Indexer and cron fixes
  • ✓Table cleanup
🖼️

Images & Media

Responsive images in WebP or AVIF, correct dimensions, lazy loading below the fold and priority hints for the LCP image.

  • ✓LCP image prioritised
  • ✓Width and height set
  • ✓CDN image delivery
📜

JavaScript & INP

Reduce and defer JavaScript, audit third-party tags and fix long tasks that hurt Interaction to Next Paint.

  • ✓Third-party script audit
  • ✓Long task analysis
  • ✓Tag manager clean-up
🚀

Hyvä Migration

When Luma is the bottleneck, migrating to Hyvä removes most frontend JavaScript and is often the biggest single improvement.

  • ✓Compatibility audit
  • ✓Phased migration
  • ✓Before/after measurement

Five Checks You Can Run Today

1. Is full-page cache actually hitting? Load a category page twice and check the response headers. With Varnish, an X-Magento-Cache-Debug: HIT header (in developer mode) or a high Varnish hit rate shows the cache is working. Frequent misses usually mean a block with cacheable="false" in layout XML.

2. Are indexers on schedule? Run bin/magento indexer:show-mode. Indexers set to "Update on Save" slow down admin saves and imports on large catalogues; "Update by Schedule" processes changes in the background through cron.

3. Is cron healthy? Check the cron_schedule table for jobs stuck in "running" or a growing list of "missed" jobs. Broken cron silently stops indexing, emails and cache cleaning.

4. Where are cache and sessions stored? File-based cache and sessions on busy stores create disk contention. Valkey or Redis is the standard for production.

5. What is your LCP element? In PageSpeed Insights, find the Largest Contentful Paint element on mobile. If it is a lazy-loaded hero image, removing lazy loading and adding fetchpriority="high" is often a quick improvement.

Measure, Fix, Verify

Performance work without measurement is guesswork. Every change we make is tied to a metric.

📊

Baseline first

We record field Core Web Vitals, server response times and cache hit rates before changing anything.

🎯

Biggest wins first

Fixes are ranked by expected impact and effort, so you see results early in the project.

🔬

Profiling, not guessing

We use profilers and APM tools to find the exact templates, blocks, queries and plugins that cost time.

📈

Ongoing monitoring

Optional monthly monitoring catches regressions from new extensions, tags or content.

Technology We Work With

PageSpeed InsightsCrUXLighthouseWebPageTestNew RelicBlackfireVarnishFastlyValkeyOpenSearchHyvä

Deliverables

  • ✓Baseline and after report with field data
  • ✓List of changes made and why
  • ✓Recommendations for remaining issues
  • ✓Optional monthly monitoring

How a Speed Project Runs

Most optimisation projects take two to four weeks. Field data takes up to 28 days to reflect changes fully.

Baseline

Collect field and lab data for key templates: home, category, product, cart and checkout.

Diagnose

Profile server and frontend, review configuration, extensions, cache and third-party scripts.

Fix server side

Cache, Valkey/Redis, database, indexers, cron and PHP configuration.

Fix frontend

Images, fonts, CSS, JavaScript and third-party tags; Hyvä migration if agreed.

Verify

Compare against baseline, monitor field data and document results.

Frequently Asked Questions

Aim for Google's "good" thresholds at the 75th percentile of real users: LCP at or under 2.5 seconds, INP at or under 200 milliseconds and CLS at or under 0.1. A server response time well under a second for cached pages is a good foundation.
Not always. Server and image fixes can bring many Luma stores close. On mobile, Luma's JavaScript often makes INP and LCP hard to fix fully, and Hyvä is usually the most effective long-term solution.
Lighthouse runs a simulated test that varies with network and server conditions. Field data from real users is more stable and is what Google uses for Core Web Vitals.
Page experience is one of many ranking signals. Faster stores tend to convert better and avoid being held back, but content and relevance still matter most.
Lab improvements are visible immediately. Field data in the Chrome UX Report uses a 28-day window, so the full effect appears over the following month.

Luma to Hyvä Migration

Remove Luma's JavaScript overhead for good.

Learn more

Magento Store Audit

A broader review of code, extensions and infrastructure.

Learn more

Magento SEO

Technical SEO alongside performance improvements.

Learn more

How Fast Is Your Store Really?

Send us your store URL. We will look at your Core Web Vitals field data and the main bottlenecks and reply with the top fixes we would make.

Phone / WhatsApp

+91 79767 89212

Response Time

Within one business day, Mon–Fri

Request a Free Speed Review

No obligation. We reply within one business day.

Free SEO & eCommerce Tools — No Signup Required

Check on-page SEO, generate schema markup and estimate what a faster store is worth. Instant results, no registration.