Joomla caching stores generated HTML or module output so the next visitor gets a faster response without rebuilding the page from the database every time. You control three layers: Global Configuration System Cache (Off, Conservative, or Progressive), the System – Page Cache plugin for full-page snapshots (guests), and module-level cache choices. Clearing cache is System → Clear Cache (or Maintenance → Clear Cache on some layouts). The same model applies on Joomla 3, 4, 5, and 6. Official overview: Joomla Cache documentation.
This guide is the operations playbook: when to turn each layer on, how to turn it off for debugging, how to purge safely, and how to stop fighting CDN or browser cache that is not Joomla at all. If Clear Cache does nothing to storage, see Joomla cache not clearing. If you published and still see yesterday’s HTML, see cache showing old content. For speed work beyond cache: speed up Joomla.
What you will learn
- What each Joomla cache layer actually stores
- Conservative vs Progressive vs Page Cache (and when Progressive bites)
- Step-by-step enable, disable, and clear flows
- Handler choices: File, APCu, Redis, Memcached
- Guest vs logged-in behavior
- A go-live checklist and troubleshooting matrix
Infyways: Joomla website optimization · Joomla support · Joomla development.
Cache layers at a glance
| Layer | What it caches | Who it usually serves | Where you control it |
|---|---|---|---|
| System Cache: Off | Nothing from global view/module caching | N/A | Global Configuration → System → Cache Settings |
| Conservative | Views/modules you allow (module Advanced → Use Global / No caching) | Guests mainly for shared output | Global Configuration + per-module |
| Progressive | Broader module combinations; overrides many per-module “No caching” expectations | Guests; easy to show wrong modules on wrong pages | Global Configuration |
| System – Page Cache | Full HTML page snapshot | Guests only (logged-in users bypass) | Plugins → System – Page Cache |
| CDN / host / browser | Edge or client copies | Everyone who hits that layer | Cloudflare, LiteSpeed, browser |
Global System Cache alone does not equal full-page caching. Page Cache is a separate plugin. That distinction is the number one agency misunderstanding.
Recommended defaults (production vs build)
| Situation | System Cache | Page Cache plugin | Notes |
|---|---|---|---|
| Active development / styling | Off | Disabled | Otherwise you chase ghosts |
| Content-heavy marketing site | Conservative | Enable after testing | Set dynamic modules to No caching |
| Rarely changing brochure site | Conservative or carefully tested Progressive | Often enabled for guests | Progressive needs QA on module assignment |
| Membership / cart / personalized UI | Conservative + strict module exclusions | Use exclusions or keep Off on private paths | Never assume Page Cache is safe on personal pages |
Step 1: Open Cache Settings
- Log in to Administrator.
- Go to System → Global Configuration.
- Open the System tab.
- Find Cache Settings.
Typical fields (labels vary slightly by version):
| Field | Meaning |
|---|---|
| System Cache | Off / Conservative / Progressive |
| Cache Handler | Usually File; APCu, Redis, or Memcached when PHP extensions and host support them |
| Cache Time | Minutes until an entry expires (default often 15) |
| Path to Cache Folder | Leave blank for default cache/ unless you have a deliberate custom path |
| Platform Specific Caching | Adds device-type flavor to cache IDs when Yes |
Official walkthrough: Cache docs.
Step 2: Enable Conservative caching (safe default)
- Set System Cache to ON – Conservative caching.
- Set Cache Handler to File unless your host already standardized on Redis/Memcached and you know how to flush it.
- Set Cache Time (start at 15–60 minutes; raise after you trust purge habits).
- Save.
- For each module that must stay dynamic (cart, login, personalized greetings), open the module → Advanced → set Caching to No caching.
- Leave stable modules on Use Global.
Conservative is the default you should prefer on client sites unless you have a reason and a test plan for Progressive.
Step 3: Enable Progressive caching only with eyes open
- Set System Cache to ON – Progressive caching.
- Save and clear cache.
- Walk key menu items as a guest. Confirm modules appear only where assigned.
- If a module “follows” you across pages incorrectly, switch back to Conservative immediately.
Progressive is faster on paper and famous for wrong-module-on-wrong-page tickets. Treat it as an advanced mode, not a trophy setting.
Step 4: Enable System – Page Cache (full pages for guests)
- Go to System → Manage → Plugins (or Extensions → Plugins on older menus).
- Search for System – Page Cache.
- Enable it.
- Review plugin options (browser cache, exclusions) for your version.
- Clear cache.
- Test as guest in a private window, then as a logged-in user.
Page Cache is the biggest win for anonymous traffic. Logged-in sessions normally bypass it. If editors say “I see the update but visitors do not,” clear the page cache group and check CDN.
Step 5: Disable caching for debugging
Use this order when something looks stale or broken:
- Disable System – Page Cache plugin.
- Set Global System Cache to OFF – Caching disabled.
- Clear Cache (Delete All).
- Bypass CDN (origin URL or development mode) and use a private browser window.
- Reproduce the bug.
- Re-enable Conservative (and Page Cache if needed) only after the fix is confirmed.
Do not leave production on Off after a support call ends.
Step 6: Clear cache in Administrator
Clear all
- Go to System → Clear Cache (sometimes under Maintenance).
- Check all groups or use Delete All / equivalent.
- Confirm the list empties or refreshes.
Clear one group
- Open Clear Cache.
- Tick a group such as page (Page Cache plugin) or a component/module group.
- Delete.
After content edits on a Page Cache site, clearing the page group is the move that fixes “guest still sees old article.”
CLI (when you automate)
From the site root, modern Joomla installs can use the console cache clean command provided by your version (joomla.php / CLI entry). Wire it into deploy hooks so releases purge File or Redis consistently. If the Admin broom works but Redis still serves old HTML, the handler was not File: cache not clearing.
Step 7: Clear what is not Joomla
| Layer | How to purge |
|---|---|
| Cloudflare / CDN | Purge URL or cache everything after major publishes |
| LiteSpeed / host page cache | Host panel or LSCache purge |
| Browser | Private window or hard refresh |
| Opcode (APCu/OPcache) | Host restart or panel tools after PHP deploys |
Joomla Clear Cache never empties Cloudflare by itself.
Handler cheat sheet
| Handler | Use when | Watch-out |
|---|---|---|
| File | Default shared hosting | Permissions on cache/; disk full |
| APCu | Single-server PHP with APCu | Not shared across multiple app servers |
| Redis / Memcached | Multi-node or high traffic | Must flush the right instance; FTP delete of cache/ does nothing |
Always match Clear Cache expectations to the handler you configured.
Guest vs logged-in checklist
- Publish the change.
- Open a private window logged out. That is the Page Cache audience.
- Open the same URL logged in. You may see fresher HTML.
- If only guests are stale, purge Page Cache + CDN.
- If both are stale, check Progressive/Conservative and module cache, then CDN.
Deep dive: cache showing old content.
Troubleshooting matrix
| Symptom | Likely cause | Fix |
|---|---|---|
| Changes invisible to guests only | Page Cache or CDN | Clear page group; purge CDN; test private window |
| Wrong module on wrong page | Progressive caching | Switch to Conservative; clear cache |
| Clear Cache “works” but Redis still old | Handler is Redis/Memcached | Flush that store; see not clearing |
| CSS/JS look cached | Browser or CDN, not view cache | Version assets; purge CDN; hard refresh |
| Site slow after turning cache Off | Expected | Re-enable Conservative after debug |
| Cart/login weirdness | Module cached | Module Advanced → No caching |
| Admin slow unrelated to front cache | Different problem | Profile Admin separately |
Key takeaways
- Conservative + selective module exclusions is the safe production baseline.
- Page Cache is separate and mainly for guests. It is the big anonymous speed win.
- Progressive is optional and easy to misconfigure.
- Clear the layer that served the response: Joomla groups, then CDN, then browser.
- Match purge method to Cache Handler (File vs Redis).
Frequently asked questions
How do I enable cache in Joomla?
Open Global Configuration → System → Cache Settings, set System Cache to Conservative (recommended) or Progressive, save, then optionally enable the System – Page Cache plugin for guest full-page caching.
How do I disable cache in Joomla?
Set System Cache to Off and disable the System – Page Cache plugin, then Clear Cache. Also bypass CDN while debugging.
How do I clear cache in Joomla?
Use System → Clear Cache and Delete All, or delete specific groups such as page. Flush Redis/Memcached if that is your handler.
What is the difference between Conservative and Progressive caching?
Conservative respects module-level “No caching” choices more sanely for mixed sites. Progressive caches module combinations more aggressively and often causes assignment bugs.
Does Page Cache work for logged-in users?
Normally no. System – Page Cache is aimed at guests. Logged-in users generate personalized output.
Why do visitors still see old content after I clear cache?
Another layer is hot: CDN, host cache, or browser. Or Page Cache was not cleared. See cache showing old content.
Should I use Redis instead of File?
Use Redis when traffic or multi-server architecture needs it and your team can flush it on deploy. File is fine for many sites.
Does this guide apply to Joomla 4, 5, and 6?
Yes. Menu labels move slightly, but Off / Conservative / Progressive, handlers, Clear Cache, and System – Page Cache remain the core model.
Can Infyways tune caching on my site?
Yes: Joomla website optimization and support and maintenance.
