Magento Full Page Cache Not Working? The Fix Checklist 2026

CodeAtoZ Engineer, CodeAtoZ
15 min read · 2844 words
Share: 𝕏 in
MAGENTO DEV · #2

Magento Full Page Cache Not Working? The Fix Checklist 2026

Magento full page cache not working is nearly always one of a handful of causes — wrong mode, Varnish bypassed, a stray cookie or query parameter. Here is how to find which, fast.

HITwhat you want
Cookiessilent killer
Prod modecheck first
Debug hdrthe answer
In this guide
Confirm the missMode + configVarnish pathCookies + paramsPrivate blocksChecklist

When your Magento full page cache not working problem means every page hits PHP, your carefully provisioned server crawls under load that Varnish should have absorbed. The frustrating part is that a broken full-page cache looks identical to a working one until you measure it — the site loads, just slowly, and only under traffic does the missing cache bite. This guide walks the causes of a Magento full page cache not working issue in order of likelihood, with the one diagnostic header that tells you exactly what is happening.

Search intent: troubleshooting — Magento developers whose full-page cache is not serving hits. We cover confirming the miss with the cache-debug header, then mode and configuration, the Varnish request path, cookies and query parameters, and private-block issues. It builds on our Varnish VCL guide and cache types guide.

01

Magento Full Page Cache Not Working: Confirm the Miss

Before changing anything, prove the problem exists and see its shape. Magento can emit a cache-debug header that reports HIT or MISS for each page, and it is the single most useful tool for a Magento full page cache not working investigation. Enable developer mode (on staging), request a cacheable page twice, and inspect the header: the first request may MISS as the cache populates, but the second should HIT. A page that MISSes every time is the symptom you are chasing.

BASH · IS IT HIT OR MISS?
# request a category page twice - second should be a HIT
curl -sI https://example.com/category.html | grep -i "x-magento-cache-debug|age|x-cache"
curl -sI https://example.com/category.html | grep -i "x-magento-cache-debug|age|x-cache"

# which FPC application is configured? (2 = Varnish, 1 = built-in)
bin/magento config:show system/full_page_cache/caching_application

# is the cache even enabled?
bin/magento cache:status | grep full_page

Note which caching application is set. A Magento full page cache not working problem splits into two branches from here: if you are on the built-in cache, the causes are mode and cacheability; if you are on Varnish, add the request-path and purge issues covered in our Varnish guide.

02

Magento Full Page Cache Not Working: Mode and Configuration

The most basic cause of a Magento full page cache not working issue is that the full-page cache is disabled or the store is in developer mode. Developer mode disables several caches by design, which is correct for development and disastrous for production performance — a store accidentally left in developer mode after debugging is a classic cause. Confirm you are in production mode on live, and that the full_page cache type is enabled.

Equally, check that the cache has not been manually disabled. It is common during troubleshooting to run cache:disable full_page and forget to re-enable it. A quick cache:status shows the state of every cache type, and re-enabling is one command. These sound trivial, but a meaningful share of Magento full page cache not working tickets are exactly this — the cache switched off and never switched back on.

03

Magento Full Page Cache Not Working: Cookies and Query Parameters

This is the subtle, high-frequency cause that catches experienced developers. The full-page cache only serves anonymous, cacheable requests — and certain things make a request uncacheable without any obvious sign. A Magento full page cache not working problem here usually traces to one of two culprits.

Cookies. Third-party scripts, analytics, chat widgets and poorly written extensions sometimes set cookies on every request. If a request carries a cookie the cache treats as session-bearing, Varnish and the built-in cache both treat it as private and skip caching entirely. A single misbehaving extension setting a cookie site-wide can defeat the full-page cache for your whole catalogue.

Query parameters. URLs with parameters the cache does not recognise — tracking parameters, unhandled filters — can each be treated as a distinct, uncacheable URL. Marketing campaigns appending tracking parameters to every landing-page link can silently blow a hole in your hit rate. The fix is to ensure such parameters are handled correctly so the underlying page still caches. Diagnosing a Magento full page cache not working issue here means comparing a clean request against a real-world one and watching which extra cookie or parameter flips HIT to MISS.

BASH · FIND THE CACHE-BUSTING COOKIE OR PARAM
# clean request - should HIT on the second call
curl -sI https://example.com/category.html | grep -i cache-debug

# same page WITH a tracking parameter - still HIT?
curl -sI "https://example.com/category.html?utm_source=test" | grep -i cache-debug

# what cookies is the site setting on a plain request?
curl -sI https://example.com/category.html | grep -i set-cookie

# a session cookie on an anonymous page = cache defeated
04

Magento Full Page Cache Not Working: Private Blocks and the Checklist

The last category of Magento full page cache not working problems involves blocks marked as private that should be public, or vice versa. Magento caches the shared page and loads personal content (cart, customer name) separately. If a custom block is incorrectly declared, it can either leak between customers (marked public when it should be private) or force a page uncacheable. Custom theme and extension blocks are the usual source, and the fix is correcting the block’s cacheability declaration in layout XML — our layout XML guide covers how.

CauseHow to spot itFix
Developer mode / cache offcache:status shows disabledProduction mode, enable full_page
Varnish bypassedNo X-Magento-Cache header at allCheck request path, backend port
Session cookie setset-cookie on anonymous pageFix the extension setting it
Tracking parametersMISS only with ?utm= paramsHandle params so page still caches
Block marked privateWhole page uncacheableCorrect cacheable in layout XML
Purge too aggressiveHIT rate low, constant repopulationReview tag-based invalidation

Work the checklist top to bottom and the cause of a Magento full page cache not working problem reveals itself quickly — mode, then cache path, then cookies and parameters, then blocks. The discipline is to change one thing and re-test the cache-debug header, rather than changing several and losing track of what fixed it. Our Magento team resolves caching problems as part of performance engagements.

CodeAtoZ Experience

What we have learned debugging Magento full-page cache

The cache-debug header ends most of these investigations fast. Instead of theorising, we enable it and watch HIT versus MISS while changing one variable at a time. It turns a vague “caching seems broken” into a precise “this parameter flips it to MISS” in minutes.

A single extension setting a site-wide cookie is the classic villain. We have traced whole-catalogue cache failures to one plugin setting a cookie on every request, which the cache reads as session-bearing and refuses to cache. Checking set-cookie on a plain anonymous page is a five-second test that has saved us hours.

Tracking parameters quietly wreck hit rate. A marketing campaign appending unique parameters to every ad link can make thousands of landing-page views uncacheable. It rarely shows in casual testing because a plain URL still HITs — you only see it when you test the real, parameterised URLs your visitors actually arrive on.

Reviewed by CodeAtoZ Engineering Team
❓

Frequently Asked Questions About Magento Full Page Cache Not Working

Q

Why is my Magento full page cache not working?

The usual causes, in order: the store is in developer mode or the cache is disabled; Varnish is not in the request path; a cookie or query parameter is making requests uncacheable; or a block is incorrectly marked private. Enable the cache-debug header and check HIT versus MISS to find which applies to you.

Q

How do I check if Magento full page cache is working?

Enable the cache-debug header in developer mode and request a cacheable page twice. The first may MISS as the cache populates; the second should HIT. A page that MISSes every time is broken. For Varnish, also check varnishstat for the cache hit ratio under real traffic.

Q

Why does Magento cache work for some pages but not others?

Usually a cookie or query parameter specific to those pages, or a block on them marked as private. Cart, checkout and account pages are never cached by design. For catalogue pages that inconsistently MISS, compare a clean request against the real parameterised URL to find what defeats caching.

Q

Yes, and it is a common cause. If an extension or third-party script sets a cookie the cache treats as session-bearing on every request, both Varnish and the built-in cache treat those requests as private and skip caching. Check set-cookie on a plain anonymous page and fix the offending extension.

Q

Do UTM and tracking parameters break Magento caching?

They can. Unhandled query parameters may each be treated as a distinct, uncacheable URL, so a campaign appending tracking parameters to every link can silently destroy hit rate on landing pages. Ensure such parameters are handled so the underlying page still caches rather than generating a fresh uncached variant each time.

Q

My Magento is in production mode but still not caching — why?

Check whether full_page was manually disabled with cache:disable and never re-enabled, whether Varnish is actually in the request path (no X-Magento-Cache header suggests it is bypassed), and whether a cookie or parameter is defeating cacheability. Work the checklist and re-test the cache-debug header after each change.

Full-Page Cache Not Delivering?

Our team diagnoses Magento caching — HIT/MISS analysis, cookie and parameter issues, Varnish path and purge.

Cache diagnosisVarnish debuggingCookie auditHit-rate tuning
CodeAtoZ
Lead Engineer & Founder, CodeAtoZ

10+ years building Magento 2 and WooCommerce platforms for high-volume e-commerce businesses. Writes about performance engineering, plugin architecture, and scalable commerce systems.

Join the Discussion

Your email address will not be published. Required fields are marked *