On PrestaShop, speed has a direct impact on sales: every extra second of loading time drives away part of your visitors before they have even seen the catalog, and Google takes it into account in its rankings. Here are the mistakes I find most often when working on existing stores, in the order I check them, and how to fix them.

First, measure

Before changing anything, you need to know where the time goes. Two measurements are enough to start with:

On a copy of the store (never in production), PrestaShop’s profiling mode details the time spent by each module and each SQL query. It is enabled in config/defines.inc.php:

define('_PS_DEBUG_PROFILING_', true);

1. Debug mode on, or caching off, in production

This is the simplest mistake to fix and one of the most common, often after a migration or a technical intervention. In Advanced Parameters > Performance, check that:

2. Too many modules installed “just in case”

Every module hooked into the theme’s display points adds code that runs on every page load, even if its feature is almost never used. The most expensive ones hook into the header or footer, because they run on every page.

3. An overloaded theme

Premium themes ship with dozens of options designed to suit everyone: sliders, animations, carousels, several fonts, sometimes several JavaScript libraries that do the same thing. Turning off what your store does not use makes every page noticeably lighter. If the theme was edited directly, without a child theme, every update becomes risky: that is often the time to clean up those changes.

4. Product images that are too heavy

A catalog with hundreds of products and photos uploaded as supplied by vendors (often several megabytes each) weighs down every category page. Three actions:

5. A database that grows without anyone noticing

Some tables grow silently: connection statistics (ps_connections, ps_guest), pages not found (ps_pagenotfound), logs (ps_log), abandoned carts. After a few years they can outweigh the catalog and slow down both the back office and the storefront. To find the largest ones:

SELECT table_name, ROUND((data_length + index_length) / 1024 / 1024, 1) AS size_mb
FROM information_schema.tables
WHERE table_schema = DATABASE()
ORDER BY size_mb DESC
LIMIT 10;

Clean-up must be done carefully, after a verified backup (see the backup rule almost nobody follows), and by turning off the statistics modules you do not use.

6. Hosting sized for a brochure website

PrestaShop needs more resources than a brochure website, especially with a large catalog. Points to check with your host:

The checklist

  1. Measure server response time and the mobile score of a product page and a category page.
  2. Debug mode off, Smarty cache and CCC on.
  3. Unused modules uninstalled, header and footer hooks checked.
  4. Unused theme options turned off.
  5. Images resized, thumbnails regenerated, WebP format.
  6. Statistics and log tables monitored and cleaned after a backup.
  7. Recent PHP with OPcache, CDN for static files.
  8. Measure again, to check that each fix had an effect.

Going further: my expertise: Freelance PrestaShop developer · read also: Migrating your PrestaShop store without losing your search rankings