Performance
Magento 2 Fetch Priority: Preload LCP Images
Magento 2 module that preloads product and category LCP images and adds fetchpriority and loading controls to Page Builder images.
Varnish caching, frontend optimisation, build tuning, and performance monitoring, with real-world benchmarks and production-tested techniques from a Cardiff-based Magento engineer.
An uncached Magento 2 page can take 500ms to several seconds to render. Varnish, Redis, Critical CSS and Magepack close most of that gap, until a single non-cacheable block in layout XML quietly wrecks the cache hit rate.
These guides come from debugging cache issues across dozens of stores, finding the blocks that break full page cache, and cutting static content deployment builds that took over 20 minutes.
Blog posts on Varnish, caching, frontend optimisation, and build performance for Magento 2.
Ever found yourself wondering why a store required downtime to deploy? Or even the case where `setup:db:status` constantly reports `Declarative Schema is not up to date` despite you just update it?
Delaying Magento 2 full page cache purges to a set schedule, to improve frontend performance and reduce system load during busy periods such as sales events like black friday.
Quick reference guide to debugging Varnish usage within Magento 2, covering cache utilisation, hit & miss rate logging, identifying the source of purge requests
A simple installer script to allow you to setup and configure PHP SPX in a Warden environment for Magento 2
Generate a diff report for the difference between the Magento 2 DB Schema in code, and the schema currently deployed.
Quick and easily identify what XML blocks are breaking your full page caching, by injecting a small piece of code into any template.
A quick and easy two line fix configuration fix for the Polyfill.io Magento 2 Malware
A simple, no nonsense overview on how to configure rate limiting via Nginx for a Magento 2 website. Including IP and UserAgent whitelisting.
In-depth guides for Varnish, full page cache and build performance.
Overview of Varnish configuration and management for Magento
Diagnose cache misses, TTL issues, and hit rate problems
Smart cache invalidation without nuking your hit rate
Hot-reload VCL configuration without downtime
Fix oversized header errors in Varnish for Magento
Find layout XML blocks that break full page cache
Cut Magento static content deployment time dramatically
Open-source tools for caching, performance testing, and optimisation.
Performance
Magento 2 module that preloads product and category LCP images and adds fetchpriority and loading controls to Page Builder images.
Performance
An experimental Varnish full-page cache module for Aero Commerce with tag-based purging, load tested with k6: 21 to 3,350 peak requests a second.
Performance
Magento 2 module that queues Varnish purge requests and flushes them from cron, so constant ERP stock updates stop emptying the full page cache.
Featured Open source
29 merged pull requests into Magento 2, Mage-OS, Warden and other open source since 2020, including three in Magento core with measured di:compile gains.
Get full page cache working first: with Varnish serving cached pages, most requests never reach PHP. Then find the non-cacheable blocks that stop pages being cached, add Critical CSS so the page renders before the full stylesheet arrives, and bundle JavaScript with Magepack. Server tuning such as OPcache and slow query fixes helps the uncached pages that are left.
Varnish serves whole pages from memory, so a cached page skips PHP and MySQL entirely. An uncached Magento page takes 500ms to several seconds to render, and without Varnish every visitor pays that cost, which is what falls over under heavy traffic.
Look for blocks with cacheable="false" in layout XML. A single one on a shared layout handle, such as default, makes every page using that handle uncacheable. Third-party extensions are the usual source, and the uncacheable blocks guide below lists them with a small template snippet.
Varnish for full page cache, Redis for the default and session caches, and a CDN for static assets. Then measure it: log Varnish hits and misses, and find out what is purging the cache. Busy catalogues can purge so often that the hit rate never recovers, which is why I built a module to batch purge requests.
Start with Varnish, because server response time feeds directly into Largest Contentful Paint. Inline Critical CSS and defer the rest of the stylesheet. Give images and banners explicit dimensions to stop layout shift. For Interaction to Next Paint, cut JavaScript: bundle with Magepack and audit third-party tags such as tag managers and chat widgets.
Performance tuning has been a core part of my Magento work for 9+ years, covering Varnish configuration, caching strategies, and frontend optimisation. Based in Cardiff, Wales, I work with UK agencies and merchants on improving store performance.