Tu tienda va lenta: cuándo es la tienda y cuándo es el servidor
Cambias el tema, quitas módulos y sigue tardando. La mitad de las veces el problema está debajo, en la máquina. Cómo…
Sábado por la tarde. Te llega un correo del hosting avisando de que tu cuenta lleva horas al 100 % de CPU. Entras a las estadísticas esperando una avalancha de clientes y te encuentras lo contrario: cuarenta mil páginas vistas y cero pedidos.
No es un ataque, ni un módulo roto, ni tu tienda haciendo cosas raras. Es que alguien se ha puesto a recorrer, uno por uno, todos los filtros de tu catálogo.
Tu tienda tiene búsqueda por filtros: talla, color, marca, precio, disponibilidad, y encima el orden de los resultados. Es lo que la hace cómoda de usar.
El problema es que cada combinación de esos filtros es una dirección web distinta. Talla M en azul de una marca ordenado por precio es una. Talla M en azul de esa marca ordenado por novedad es otra. Y así con todas las combinaciones posibles: en una tienda de tamaño medio salen cientos de miles; en una grande, millones.
Los rastreadores de las redes sociales y de los servicios de inteligencia artificial —los de Facebook, los de TikTok, los de media docena de empresas que ni conoces— han decidido que tienen que verlas todas. Y las piden todas, a la vez, sin pausa.
Cada una de esas direcciones no es una página que tengas guardada: es una búsqueda nueva contra tu base de datos.
Los filtros de tu tienda los pinta un módulo concreto, Búsqueda por facetas (ps_facetedsearch), el que viene de serie en PrestaShop desde la 1.7 y que sustituyó a la antigua Navegación por capas. Si tienes filtros en las categorías, lo tienes activo.
Reconocerlo en tus registros es fácil: cada combinación viaja en el parámetro q de la dirección, con esta pinta.
/12-camisetas?q=Talla-M/Color-Azul/Marca-Adidas
Si al abrir el registro de accesos ves miles de líneas con ?q=, todas distintas y seguidas, ya sabes qué te está comiendo la máquina.
Y aquí está el porqué de que sea tan caro. Cuando llega una de esas peticiones, el módulo no solo busca los productos que cumplen el filtro: además recalcula los contadores de todos los demás filtros —ese «Azul (12)», «Verde (5)» que ves junto a cada casilla— y para eso lanza varias consultas de recuento sobre sus tablas de índice. Multiplícalo por un catálogo grande y por miles de peticiones por minuto.
Dos palancas que están en el propio módulo y que casi nadie toca, en Catálogo → Búsqueda por facetas:
Ninguna de las dos arregla el problema por sí sola, pero las dos bajan el coste de cada golpe antes de tocar nada más.
Una búsqueda con filtros es de las operaciones más caras que hace una tienda: tiene que mirar todo el catálogo, cruzar atributos, contar cuántos productos quedan en cada filtro y ordenar el resultado. Un cliente hace tres o cuatro en toda su visita. Un rastreador hace tres o cuatro por segundo.
Y aquí está la parte que descoloca a todo el mundo: la caché no te salva. Guardar en caché sirve cuando muchos visitantes piden lo mismo. Aquí no se repite ninguna: cada combinación es única, así que todas son «primera visita» y todas van a la base de datos.
El resultado es siempre el mismo. Las peticiones se amontonan, el servidor se queda sin sitio y la tienda deja de responder — para el robot y para el cliente que estaba a punto de pagar. Si además te llega en plena campaña, has pagado la publicidad de una web que no abría.
Cuatro señales, y con dos que se te junten ya casi es seguro:
Si el panel de administración también va lento mientras pasa, tienes la confirmación: no es la parte pública, es que la máquina está saturada. Lo contábamos en cuándo la lentitud es de la tienda y cuándo del servidor.
Este problema tiene un montón de soluciones populares que en la práctica no aguantan:
Todas comparten el mismo defecto: tratan el síntoma, que es el tráfico, en lugar de la causa, que es que tu tienda esté dispuesta a fabricar millones de páginas distintas a quien se las pida.
Lo que sí aguanta se monta en tres capas, y ninguna consiste en apagar los filtros:
Con eso, lo normal es que el consumo baje de golpe el primer día y que la tienda deje de caerse, sin tocar ni un filtro de cara al cliente y sin perder posiciones en Google. Al revés: cuando dejas de gastarle a Google su tiempo en cuatrocientas mil páginas repetidas, empieza a mirar las que te interesan — que es justo lo que contábamos en por dónde empezar cuando no apareces.
Es un problema desagradable porque no da la cara: no hay un error que mirar, solo una tienda que unos días va y otros no, y un hosting que te echa la culpa a ti.
Si has probado ya un par de las soluciones de la lista y sigues igual, escríbenos. Miramos tus registros, te decimos cuántas de esas peticiones son reales y cuántas son ruido, y te dejamos el filtrado montado y midiendo. Lo hemos hecho unas cuantas veces y el primer día ya se nota.
Cambias el tema, quitas módulos y sigue tardando. La mitad de las veces el problema está debajo, en la máquina. Cómo…
Tienes la tienda montada, los productos subidos y de Google no entra nadie. Estas son las cinco cosas que miramos…