Open your shop in a private window and count. If the first page takes a while to appear, it is not your connection: it is PrestaShop building it from scratch. On a shop with shared hosting, a large catalogue and a few dozen modules, waiting around 5 seconds for the server to deliver a page is not unusual. With a well-built page cache, that same page can arrive in around half a second.

The catch is that caching PrestaShop is delicate. Done in a hurry, the cure is worse than the disease: customers seeing someone else’s cart, outdated prices, sales that never start. This article explains why it happens, how much you gain when it is done right and what a cache must do before you can switch it on with peace of mind.

The wait until the page arrives

Example of a slow shop, same page and same server

10 times less waitingfrom about 5 s to about 0.5 s

Without a cache
5.0 s
With a page cache
0.5 s

Illustrative example. Real results depend on hosting, modules and theme: the slower the shop, the bigger the difference.

What PrestaShop does on every visit

Every time someone opens a page, PrestaShop boots, works out the language, currency and country, loads the controller, runs every hook on the page (each installed module can add its part), fires tens or hundreds of catalogue queries, calculates prices with taxes and discounts, and puts it all together with the theme’s Smarty templates. For most visitors, all of that produces exactly the same page the previous visitor just received.

The road to a page

What a new visitor is spared when the page is already prepared

Without a cacheevery visit
  • Request
  • →
  • PrestaShop boots
  • →
  • Controller
  • →
  • Hooks of every module
  • →
  • Catalogue queries
  • →
  • Prices and taxes
  • →
  • Smarty templates
  • →
  • Page
With a cachevisitors without account or cart
  • Request
  • →
  • PrestaShop boots
  • →
  • Page already prepared

The options in Advanced Parameters › Performance (Smarty cache, CCC, template compilation) make each step faster, but they do not skip them. PrestaShop has no built-in full-page cache: that is why so many shops turn to modules or their host’s cache, and why so many end up switching it off.

Every second counts for conversion

Speed is not a technical detail: it is money. A 2022 Portent analysis of online shops found that pages loading in 1 second convert far better than pages taking just a few seconds more.

Online shop conversion rate by load time

At 3 seconds, shops sell less than half of what they sell at 1 second

3.05%
1.68%
1.12%
1 s2 s3 s

Source: Portent, "Site Speed is (Still) Impacting Your Conversion Rate" (2022), B2C shops in its sample.

And you do not need to win whole seconds to notice it:

What the studies say

+8.4%
retail conversions when the mobile site is just 0.1 s faster
Deloitte Digital for Google, 2020
+9.2%
higher average spend with that same 0.1 s improvement
Deloitte Digital for Google, 2020
+32%
bounce probability when load time goes from 1 to 3 seconds
Think with Google

On top of that, the time the server takes to answer is part of what Core Web Vitals and PageSpeed Insights measure: a shop that answers sooner starts ahead.

Why caching PrestaShop is so delicate

A cache stores a page and hands it to the next visitor. Easy, until you remember everything in PrestaShop that changes from one visitor to another, or from one moment to the next:

That is why caches switched on “the hard way” (some hosts’ caches, an unconfigured Varnish, modules that store everything) end up with the same scares: someone else’s cart, prices that do not match the order, the sale that does not start, an error page stored. And the shop is slow again because someone switches the cache off “just in case”.

What a safe cache must do

Before switching on any page cache in PrestaShop, check that it:

  1. Only serves stored pages to visitors with nothing of their own: not signed in, with an empty cart. Everyone else always gets the live page.
  2. Only stores pages built for “blank” visitors, without cart, account or history, so nothing personal ever slips in.
  3. Never touches the cart, checkout, account or search.
  4. Keeps separate pages per currency, country, device and shop, so prices and taxes are always right.
  5. Renews a product’s pages as soon as its price or stock changes, without emptying everything else.
  6. Expires exactly when a scheduled price or a flash sale starts or ends.
  7. Is invalidated when you save any setting in the back office, but not by the modules’ internal bookkeeping.
  8. Never stores errors, redirects or half-built pages.

What other cache modules do

PrestaShop has three broad families of solutions, and it helps to know what each one offers:

Approach Examples How it handles cart and account What it needs Keep in mind
Page-cache module that reloads blocks by ajax Page Cache Ultimate (JPresta) and similar Serves the stored page to everyone, signed-in customers included, then fetches the personal blocks (cart, name, viewed products) by ajax Setting which modules are “dynamic” Speeds up signed-in customers too; you need to review which modules are personal (JPresta offers an auto-configuration) and, until the ajax call returns, those blocks show their default value (an empty cart, for example)
Server-side cache Varnish, LiteSpeed Cache for PrestaShop Private blocks per user through ESI or custom rules A server that supports it (LiteSpeed Web Server, Varnish) and access to configure it The fastest, since PHP does not even start; usually not available on shared hosting, and hand-written Varnish rules without the right exclusions can show someone else’s cart
Optimisers Minify, combine CSS/JS or lazy-load modules Do not store the page Nothing special They help the browser, but PrestaShop still builds every page from scratch

All of them are valid options, each with its price in configuration, infrastructure or risk.

What makes Page Cache stand out

Page Cache is our full-page cache module for PrestaShop 8.2 and 9.0. It takes a different path: it never stores anything personal, and it gives each visitor their personal parts back separately.

And what it does not do, so you can decide with all the facts: because it answers from PrestaShop (no special server), a cached page still goes through PHP’s start-up, and product pages for signed-in customers are off until the check confirms that no module prints something personal there that is not covered. If you need the absolute maximum with millions of visits, a well-configured server cache may suit you better. For most shops, where nearly all new traffic arrives without a session from Google, ads and newsletters, Page Cache speeds up exactly those visits with no risk.

Want it all in one place? Speed up PrestaShop brings together the page cache, the filters, the search and the checkout, with what we measured and where to start.

Sources