Caching in Joomla

Complete Joomla caching guide for 4, 5, and 6: Conservative vs Progressive, System Page Cache, Redis and Memcached, exclusions, LiteSpeed layering, and staging steps. Upgrades from $149.

Abhilash Sahoo
Abhilash Sahoo
Updated 13 min read
Caching in Joomla

Caching in Joomla means storing rendered HTML, component views, and module output so the next guest request skips most database and PHP work. In Joomla 4, 5, and 6 you control three layers: Global Configuration System Cache (Off, Conservative, or Progressive), the System - Page Cache plugin for whole guest pages, and per-module Advanced caching. Handlers decide where copies live (File, APCu, Redis, or Memcached).

Official docs explain the switches. Deep technical posts explain com_cache internals. LiteSpeed magazine pieces cover one host stack. This guide is the operator map: which mode to pick by site type, what breaks Progressive and Page Cache, Redis and Memcached setup gotchas, how to clear and purge safely, and when caching alone cannot fix a slow EOL site. Infyways upgrades and tunes production Joomla from $149 with a free audit within 12 hours.

What you will learn

  • The three cache layers and the order they win
  • Conservative vs Progressive vs Page Cache with a decision table
  • File, APCu, Redis, and Memcached: when each handler is right
  • Exclusions for carts, forms, login, and personalised modules
  • Clear vs purge, CLI clean, and stale-content fixes
  • How LiteSpeed (or another edge cache) should sit beside Joomla cache
  • A staging checklist and when to call Infyways

How Joomla caching is layered

Think of three increasing levels of aggressiveness. The first layer that can answer usually wins.

LayerWhere you set itWhat it cachesWho it serves
System Cache (Conservative or Progressive)System → Global Configuration → System → Cache SettingsComponent views and modules (rules differ)Mostly guests for core content views; access levels are part of the cache id
Module Advanced tabEach module → AdvancedThat module only (Use global or No caching)Respects Conservative; ignored for guests under Progressive
System - Page Cache pluginSystem → Manage → PluginsWhole HTML page by URLGuests only. Fastest built-in option

Primary sources: Joomla Cache user guide, caching views and modules (manual), and the LiteSpeed Cache and Redis magazine article.

Important: turning System Cache to Conservative does not by itself cache the full page. Full-page guest caching needs the System - Page Cache plugin enabled separately.

Conservative vs Progressive vs Off

ModeWhat happensUse whenAvoid when
OffNo view or module cache from Global ConfigurationDebugging, template work, chasing a stale bugBusy production brochure sites
Conservative (recommended default)Caches eligible component views and modules that allow caching. Module "No caching" is respectedAlmost every site: membership, forms, stores, multilingualNever the wrong starting point
ProgressiveFor logged-off users, all modules are cached. Module "No caching" has no effect. Module output often shares a com_modules group fileStatic brochure sites after careful staging testsMenus that change by page, random modules, login-aware chrome, anything that must differ per Itemid

Myth to kill: Progressive is not "caching for logged-in users." Official docs are explicit that core view cachability rules do not flip that way. Progressive is more aggressive module caching for guests.

Classic Progressive failure: the wrong module appears on the wrong page because one cached module blob was reused across Itemids. If you see that, switch back to Conservative immediately.

Joomla Global Configuration Cache Settings showing System Cache and Cache Handler

System - Page Cache plugin

This is the fastest built-in path. On a hit, Joomla can return stored HTML before most of the site boots. It only serves guests. Logged-in visitors always get a fresh build so names, carts, and private menus stay private.

Enable System Page Cache plugin in Joomla Plugins manager
  • Enable: System → Manage → Plugins → System - Page Cache
  • It uses the same handler and Cache Time as Global Configuration
  • Exclude menu items and URL patterns for anything dynamic
  • Use Browser Caching sends browser cache headers. Leave it off unless you understand that visitors can keep a page after you clear server cache
System Page Cache plugin options including excluded menu items and browser caching

Always exclude (or never page-cache): contact and other forms, search results, login and registration, carts and checkout, tokenised or one-time pages, and any URL that must reflect the current session. Editing an article does not always clear every page that embeds it. Clear the page cache group after content launches that must be instant.

Cache handlers: File, APCu, Redis, Memcached

HandlerStores inBest forWatch outs
Filecache/ and administrator/cache/Default on shared hosting and most single serversMany tiny files on slow disks; purge expired regularly
APCuPHP shared memorySingle server speed win for small itemsNot shared across nodes; cleared on PHP restart
RedisRedis server or Unix socketClusters, high traffic, LiteSpeed object cache stacksWrong host or socket causes 500s; change handler before killing Redis
MemcachedMemcached server or socketShared cache across web nodesOften labelled experimental in host UIs; test persistence settings

Modern Joomla no longer relies on old handlers such as XCache or eAccelerator. If a host guide still lists them, ignore that part.

Redis tip from real support threads: if you disable System Cache while Redis is already unreachable, you can still get connection errors until you switch the handler back to File (or a working Redis), save, then turn caching off. Flush cache after handler changes.

Global Configuration fields that matter

SettingMeaningPractical default
System CacheOff / Conservative / ProgressiveConservative
Cache HandlerWhere items are storedFile, then Redis on capable hosts
Platform Specific CachingAdds device type into the cache idNo, unless desktop and mobile HTML truly differ on the same URL
Cache TimeLifetime in minutes (default 15)15 for mixed sites; lower for news; higher for static brochures
Path to Cache FolderCustom file pathLeave blank unless you know why

Module Cache Time is in seconds. Global Cache Time is in minutes. Mixing those units is a common misconfiguration.

Per-module caching

  • Open the module → Advanced → Caching: Use global or No caching
  • Set No caching for login status, live counters, random quotes, carts, and anything personal
  • Under Progressive for guests, No caching is ignored. That is why Progressive breaks dynamic chrome
  • Some modules declare a cache mode in code (static, itemid, and similar). A badly coded static mode can freeze wrong content even on Conservative

Breadcrumbs is a safe module to use when testing Conservative caching on staging.

Decision guide by site type

Site typeSystem CachePage Cache pluginHandlerNotes
Brochure / marketingConservative (try Progressive only after tests)On, with form pages excludedFile or RedisBiggest easy win
Membership / ACL contentConservativeOn for public pages only; exclude member areasFile or RedisAccess levels belong in cache ids; still exclude personal dashboards
MultilingualConservativeOnFile or RedisLanguage is part of identity; clear cache after language or SEF changes
VirtueMart / Hikashop / cartsConservativeOn only for static CMS pages; exclude cart, checkout, accountFile or RedisPage Cache on cart URLs causes classic "empty cart" bugs
Heavy community / logged-in trafficConservativeLimited; focus on guest landing pagesRedis preferred on busy hostsPage Cache helps guests only
LiteSpeed hostConservativeOften rely on LiteSpeed full-page; keep Joomla ConservativeRedis as object cache when offeredMagazine guidance: Conservative with LiteSpeed + Redis reduces conflicts

LiteSpeed, CDN, and Redis together

Edge page cache (LiteSpeed Cache for Joomla, Cloudflare, or a reverse proxy) sits in front of Joomla. Redis or Memcached as the Joomla cache handler speeds object and view cache behind that. Do not stack three aggressive full-page systems without a purge story.

  • Prefer Conservative when an external full-page cache is already on
  • Let the edge plugin purge on article save when it supports automatic purge
  • Use Redis for shared or high-traffic object cache, not as a substitute for excluding dynamic URLs
  • ESI and logged-in edge features vary by LiteSpeed edition. Test on staging

Clear Cache vs Clear Expired Cache

ActionPathRemovesUse when
Clear CacheSystem → Maintenance → Clear CacheSelected groups or everythingAfter template, override, or extension updates; stale homepage; debugging
Clear Expired CacheSystem → Maintenance → Clear Expired CacheOnly past-lifetime itemsRoutine housekeeping so File handler folders do not fill forever
CLI cleanphp cli/joomla.php cache:cleanAll (or expired with the expired argument)Deploy scripts and cron

With the File handler you can also empty cache/ via SFTP if the admin is down. That is equivalent to a full clear. Joomla cache is not a database table.

Step 1: Set a safe baseline on staging

  1. Clone production to staging.
  2. System → Global Configuration → System → Cache Settings: System Cache = ON - Conservative caching, Handler = File, Platform Specific Caching = No, Cache Time = 15.
  3. Save. Browse as a guest. Confirm pages load and dynamic modules still update.
  4. Only then introduce Redis or Progressive on a second staging pass.

Step 2: Enable Page Cache with exclusions

  1. Enable System - Page Cache.
  2. Exclude contact, search, login, cart, checkout, and account menu items.
  3. Leave Use Browser Caching off for the first week.
  4. As a guest, load a public article twice. Confirm a cache/page entry appears when using the File handler.
  5. Edit that article, clear the page group, and confirm the front end updates.

Step 3: Tune modules and handlers

  1. Set personal or random modules to No caching (Conservative only).
  2. If the host offers Redis, set handler to Redis, enter socket or host, port 0 for Unix sockets when required, save, then Clear Cache.
  3. Retest guest and logged-in paths, forms, and checkout.
  4. Optional: try Progressive only on a static brochure clone. Revert at the first wrong-module symptom.

Step 4: Production cutover and monitoring

  • Apply the proven staging settings during a low-traffic window
  • Clear Cache after deploy
  • Watch Core Web Vitals and server CPU for a week
  • Schedule Clear Expired Cache or CLI purge if you stay on File
  • Document exclusions so the next editor does not enable Page Cache on checkout

Troubleshooting stale or broken cache

SymptomLikely causeFix
Old article text on guestsPage Cache still holding URLClear page group; shorten Cache Time if launches are frequent
Wrong module on a pageProgressive guest module cacheSwitch to Conservative; clear com_modules
Empty cart or stuck formPage Cache on dynamic URLsExclude those menu items and URLs; clear page cache
Redis connection 500 after "turning cache off"Handler still Redis while server is downSet handler to File while Redis is up, save, then disable caching
Logged-in users see no speed gain from Page CacheBy designRely on Conservative + Redis; Page Cache is guest-only
Mobile gets desktop chromePlatform Specific Caching off while serving different HTMLEnable only if HTML truly differs; prefer one responsive template

Related reading: Joomla upgrade issues and fix Joomla update errors when cache problems appear after a version hop.

When caching is not enough

Cache multiplies a healthy stack. It does not replace an unsupported Joomla 3 site, an abandoned template full of blocking scripts, or PHP that the host is about to retire. If Time to First Byte stays poor after Conservative + Page Cache on staging, fix the CMS and template path first.

Infyways runs that path as a service:

  • Free compatibility and performance audit within 12 hours
  • Fixed packages from $149 small / $299 medium / custom for stores and clusters
  • 100+ JED extensions in-house when a cache-hostile extension needs a rebuild
  • Staging-first cutover and 30 days of post-launch support on defects we introduce

Start: Joomla Upgrade Services.

What thinner articles leave out

TopicTypical postThis guide
VersionsJoomla 3 or 4 screenshots onlyJoomla 4 / 5 / 6 settings that still apply
Conservative vs ProgressiveOne paragraph or a myth about logged-in usersDecision table + Progressive failure mode
Page Cache"Turn the plugin on"Guest-only rule, exclusions, browser caching warning
HandlersFile only, or outdated APC listsFile, APCu, Redis, Memcached with cluster notes
Edge cacheMissing or vendor-onlyLiteSpeed + Redis layering with Conservative default
OperationsClear Cache buttonClear vs purge, CLI, deploy hygiene
Site typesGeneric speed claimsBrochure, ACL, multilingual, cart matrix
Next stepAffiliate plugin linkStaging steps + Infyways audit from $149

Key takeaways

  1. Start with Conservative caching. Add System - Page Cache for guests with strict exclusions.
  2. Progressive is optional and dangerous for dynamic modules. It is not "logged-in caching."
  3. Full-page cache is a separate plugin. Global System Cache alone is not full-page cache.
  4. File is fine for most sites. Redis or Memcached help clusters and high traffic.
  5. Global Cache Time is minutes. Module Cache Time is seconds.
  6. Clear the page group after launches that must be instant. Purge expired on File hosts.
  7. Edge cache plus Joomla Conservative plus Redis is a common modern stack. Test purge behaviour.
  8. If the site is EOL or template-bound, upgrade first. Cache cannot patch an unsupported core.

Frequently asked questions

It is storing views, modules, or whole guest pages so repeat requests skip most PHP and database work. You control it with System Cache, module Advanced settings, and the System - Page Cache plugin.

Use Conservative for almost every site. Use Progressive only on static brochure sites after staging tests, because guest modules are force-cached and "No caching" is ignored.

No. Conservative or Progressive cache views and modules. Whole-page guest caching needs the System - Page Cache plugin.

No. The plugin serves guests only so personalised HTML is never shared between users.

No. That is a common myth. Progressive changes how guest modules are cached. Core view rules for logged-in users stay separate.

File for standard shared hosting. APCu for a fast single server. Redis or Memcached when you need shared memory cache across nodes or your host recommends it with LiteSpeed.

Page Cache is almost certainly covering cart or checkout URLs. Exclude those menu items and clear the page cache group.

Run php cli/joomla.php cache:clean from the site root. Use the expired variant for purge-only cleanup in cron.

No. It can help guests, but unsupported core, old PHP, and abandoned templates still need an upgrade path. See benefits of Joomla migration.

Packages start at $149 for small sites and $299 for medium sites. Stores and multi-node setups are custom after the free audit.

Share this article
Abhilash Sahoo

Written by

Abhilash Sahoo

Abhilash Sahoo, with over 16 years of experience, is Founder & CEO of Infyways Solutions. He builds web platforms and eCommerce on Joomla, WordPress, Shopify, Magento, and OpenCart, plus modern stacks like Next.js, React, Node.js, and Python, with AI agents, automation, and headless CMS when products need to scale.

Keep reading

Related articles

Get in touch

Have a project in mind? Let's talk about it.

Tell us what you're building. Whether it's a new site, an online store, a mobile app, or something that needs AI under the hood, we'll get back to you within a business day.

Free consultation
No commitment, no pressure
Reply within 24 hours
Usually much faster

Prefer a direct conversation?

Request a project quote

Tell us about your project

Fill out the quick form and we'll reach out.