Your shop is slow: when it is the shop and when it is the server
You change the theme, remove modules and it is still slow. Half the time the problem is underneath, in the machine. How…
Saturday afternoon. An email arrives from your host warning that your account has been at 100 % CPU for hours. You open your stats expecting a flood of customers and find the opposite: forty thousand page views and zero orders.
It is not an attack, not a broken module, not your shop doing something odd. Somebody has started walking through every single filter in your catalogue, one by one.
Your shop has faceted search: size, colour, brand, price, availability, plus the sort order on top. It is what makes it comfortable to use.
The problem is that every combination of those filters is a different web address. Size M in blue from one brand sorted by price is one. Size M in blue from that brand sorted by newest is another. And so on through every possible combination: on a mid-sized shop that runs into hundreds of thousands; on a large one, millions.
The crawlers of the social networks and of the AI services —Facebook's, TikTok's, half a dozen companies you have never heard of— have decided they need to see all of them. And they request all of them, at once, without pausing.
Each of those addresses is not a page you have stored: it is a fresh search against your database.
Your shop's filters are drawn by one specific module, Faceted search (ps_facetedsearch), the one shipped with PrestaShop since 1.7 that replaced the old Layered navigation. If you have filters on your category pages, you have it enabled.
Spotting it in your logs is easy: every combination travels in the q parameter of the address, looking like this.
/12-tshirts?q=Size-M/Colour-Blue/Brand-Adidas
If your access log shows thousands of lines with ?q=, all different and back to back, you know what is eating the machine.
And here is why it is so expensive. When one of those requests arrives, the module does not only look for the products matching the filter: it also recalculates the counters for every other filter —that «Blue (12)», «Green (5)» next to each checkbox— and to do so it fires several counting queries against its index tables. Multiply that by a large catalogue and by thousands of requests a minute.
Two levers that live in the module itself and almost nobody touches, under Catalogue → Faceted search:
Neither fixes the problem on its own, but both lower the cost of each hit before you touch anything else.
A filtered search is one of the most expensive things a shop does: it has to go through the whole catalogue, cross-reference attributes, count how many products are left under each filter and sort the result. A customer runs three or four in an entire visit. A crawler runs three or four a second.
And here is the part that throws everyone: caching does not save you. Caching helps when many visitors ask for the same thing. Here nothing repeats: every combination is unique, so they are all «first visits» and they all go through to the database.
The outcome is always the same. Requests pile up, the server runs out of room and the shop stops responding — to the robot and to the customer who was about to pay. If it lands mid-campaign, you have paid for ads pointing at a site that would not open.
Four signs, and any two together make it near certain:
If the admin panel is slow while it happens, that is your confirmation: it is not the public side, the machine is saturated. We covered it in when slowness is the shop and when it is the server.
This problem attracts a lot of popular fixes that do not hold up in practice:
They all share the same flaw: they treat the symptom, which is the traffic, instead of the cause, which is that your shop is willing to manufacture millions of different pages for anyone who asks.
What actually holds is built in three layers, and none of them means switching filters off:
With that, usage normally drops sharply on day one and the shop stops falling over, without touching a single filter as far as customers are concerned and without losing ground on Google. Quite the opposite: once you stop spending Google's time on four hundred thousand repeated pages, it starts looking at the ones you care about — which is exactly what we covered in where to start when you do not show up.
It is a nasty problem because it never shows its face: there is no error to look at, just a shop that works some days and not others, and a host telling you it is your fault.
If you have already tried a couple of the fixes on that list and you are still where you started, write to us. We go through your logs, tell you how many of those requests are real and how many are noise, and leave the filtering in place and measured. We have done it a fair few times and it shows on day one.
You change the theme, remove modules and it is still slow. Half the time the problem is underneath, in the machine. How…
The shop is built, the products are up and nothing arrives from Google. These are the five things we always look at,…