Abre tu tienda en una ventana privada y cuenta. Si la primera página tarda en aparecer, no es culpa de tu conexión: es PrestaShop montándola desde cero. En una tienda con hosting compartido, un catálogo grande y unas decenas de módulos no es raro esperar alrededor de 5 segundos a que el servidor entregue una página. Con una caché de página bien hecha, esa misma página puede llegar en alrededor de medio segundo.
El problema es que cachear PrestaShop es delicado. Hecho deprisa, el remedio es peor que la enfermedad: clientes que ven el carrito de otro, precios antiguos, ofertas que no empiezan. En este artículo te contamos por qué pasa, cuánto ganas cuando se hace bien y qué tiene que cumplir una caché para que puedas activarla tranquilo.
La espera hasta que llega la página
Ejemplo de una tienda lenta, misma página y mismo servidor
10 veces menos esperade unos 5 s a unos 0,5 s
Ejemplo ilustrativo. El resultado real depende del hosting, los módulos y el tema: cuanto más lenta es la tienda, más se nota.
Qué hace PrestaShop en cada visita
Cada vez que alguien abre una página, PrestaShop arranca, decide el idioma, la moneda y el país, carga el controlador, ejecuta todos los hooks de la página (cada módulo instalado puede añadir su parte), lanza decenas o cientos de consultas al catálogo, calcula precios con impuestos y descuentos, y compone el resultado con las plantillas Smarty del tema. Todo eso, para la mayoría de visitantes, produce exactamente la misma página que acaba de recibir el anterior.
El camino de una página
Lo que se ahorra un visitante nuevo cuando la página ya está preparada
- Petición
- →
- Arranque de PrestaShop
- →
- Controlador
- →
- Hooks de todos los módulos
- →
- Consultas al catálogo
- →
- Precios e impuestos
- →
- Plantillas Smarty
- →
- Página
- Petición
- →
- Arranque de PrestaShop
- →
- Página ya preparada
Las opciones de Parámetros avanzados › Rendimiento (caché de Smarty, CCC, compilación de plantillas) ayudan a que cada paso sea más rápido, pero no evitan darlos. PrestaShop no trae una caché de página completa: por eso tantas tiendas recurren a módulos o a la caché del hosting, y por eso tantas acaban desactivándola.
Cada segundo cuenta en la conversión
La velocidad no es una cuestión técnica: es dinero. Un análisis de Portent de 2022 sobre tiendas online encontró que las páginas que cargan en 1 segundo convierten mucho más que las que tardan unos pocos segundos más.
Tasa de conversión de tiendas online según el tiempo de carga
A 3 segundos ya se vende menos de la mitad que a 1 segundo
Fuente: Portent, «Site Speed is (Still) Impacting Your Conversion Rate» (2022), tiendas B2C de su muestra.
Y no hace falta ganar segundos para notarlo:
Lo que dicen los estudios
Además, el tiempo que tarda el servidor en responder forma parte de lo que miden Core Web Vitals y PageSpeed Insights: una tienda que responde antes parte con ventaja.
Por qué cachear PrestaShop es tan delicado
Una caché guarda una página y se la da al siguiente. Fácil, hasta que recuerdas todo lo que en PrestaShop cambia de un visitante a otro o de un momento a otro:
- El carrito y la cuenta. La cabecera muestra el número de productos del carrito y el nombre del cliente. Si se guarda la página de un cliente con sesión, el siguiente visitante verá «Hola, Marta» y su carrito.
- Los precios por cliente. Los grupos de clientes, los precios B2B y los descuentos por cliente cambian lo que se ve en la ficha.
- Moneda, país e impuestos. PrestaShop puede elegir la moneda y el país según el navegador o la IP, y con ellos los impuestos. Una sola página para todos significa precios equivocados para alguien.
- Precios con fecha. Los precios específicos, las reglas de catálogo y las ventas flash empiezan y acaban a una hora concreta. Una página guardada a las 23:59 sigue enseñando el precio viejo a las 00:01 si nadie la renueva.
- Stock y cambios del catálogo. Un producto que se agota, una foto nueva o un precio corregido tienen que verse en la ficha, en su categoría y en los listados donde aparece.
- Los módulos. Cada módulo puede imprimir algo distinto para cada visitante: productos vistos, tokens de formularios, avisos personalizados. Y algunos escriben ajustes en cada visita, lo que confunde a las cachés que se vacían con cualquier cambio.
Por eso las cachés que se activan «a lo bruto» (la de algunos hostings, Varnish sin configurar o módulos que guardan todo) acaban dando los mismos sustos: el carrito de otro, precios que no cuadran con el pedido, la oferta que no arranca, una página de error guardada. Y la tienda vuelve a ser lenta porque alguien desactiva la caché «por si acaso».
Lo que tiene que cumplir una caché segura
Antes de activar cualquier caché de página en PrestaShop, comprueba que:
- Solo sirve páginas guardadas a quien no tiene nada propio: sin sesión iniciada y con el carrito vacío. El resto recibe siempre la página en directo.
- Solo guarda páginas de visitantes «en blanco», sin carrito, cuenta ni historial, para que nunca se cuele nada personal.
- Nunca toca el carrito, el pedido, la cuenta ni la búsqueda.
- Separa las páginas por moneda, país, dispositivo y tienda, para que los precios e impuestos sean siempre los correctos.
- Renueva las páginas de un producto en cuanto cambian su precio o su stock, sin vaciar todo lo demás.
- Caduca justo cuando empieza o acaba un precio programado o una venta flash.
- Se invalida cuando guardas cualquier ajuste en el back office, pero no por la contabilidad interna de los módulos.
- No guarda errores, redirecciones ni páginas a medias.
Qué hacen otros módulos de caché
En PrestaShop hay tres grandes familias de soluciones, y conviene saber qué ofrece cada una:
| Enfoque | Ejemplos | Cómo trata el carrito y la cuenta | Qué necesita | A tener en cuenta |
|---|---|---|---|---|
| Módulo de caché de página que recarga bloques por ajax | Page Cache Ultimate (JPresta) y similares | Sirve la página guardada a todos, también a clientes con sesión, y después pide por ajax los bloques personales (carrito, nombre, productos vistos) | Configurar qué módulos son «dinámicos» | Acelera también a clientes con sesión; hay que revisar qué módulos son personales (JPresta ofrece una autoconfiguración) y, mientras llega el ajax, esos bloques muestran su valor por defecto (por ejemplo, el carrito a 0) |
| Caché en el servidor | Varnish, LiteSpeed Cache para PrestaShop | Bloques privados por usuario mediante ESI o reglas propias | Un servidor que lo soporte (LiteSpeed Web Server, Varnish) y acceso para configurarlo | Es lo más rápido, porque no arranca PHP; en hosting compartido normalmente no está disponible, y unas reglas de Varnish hechas a mano sin las exclusiones correctas pueden enseñar el carrito de otro |
| Optimizadores | Módulos de minificar, combinar CSS/JS o carga diferida de imágenes | No guardan la página | Nada especial | Ayudan al navegador, pero PrestaShop sigue montando cada página desde cero |
Todas son opciones válidas, cada una con su precio en configuración, infraestructura o riesgo.
Qué destaca de Page Cache
Page Cache es nuestro módulo de caché de página completa para PrestaShop 8.2 y 9.0. Elige un camino distinto: nunca guarda nada personal, y lo personal se lo devuelve a cada visitante por separado.
- Seguro sin configurar nada. Solo se guardan páginas generadas para visitantes «en blanco»: aunque un módulo de tu tienda imprima algo personal, nunca llega a la caché. Por defecto, quien ha iniciado sesión o tiene algo en el carrito recibe la página en directo.
- Clientes más rápidos, si quieres. Con los fragmentos dinámicos activados, los clientes con sesión y quien tiene carrito también reciben la página de la caché, y su carrito, su nombre y sus enlaces de cuenta aparecen un instante después. Los tokens de los formularios se ponen en la página antes de enviarla, así que «Añadir al carrito» funciona desde el primer clic. Los clientes con precios propios o de otros grupos siguen recibiendo la página en directo.
- Pensado para desarrolladores. Si otro módulo imprime algo personal, un formulario con cada campo explicado permite decir qué elemento es y de dónde sale su contenido actualizado: un hook de módulo, un evento de PrestaShop o una página de la tienda.
- Una comprobación antes de activarla. Abre tus páginas como dos visitantes nuevos y te enseña cualquier diferencia entre ambas, para que sepas si tu tienda es apta antes de activar nada.
- Precios siempre al día. Renueva al momento las páginas de un producto cuando cambian su precio, su stock, sus combinaciones o sus imágenes; las páginas caducan justo cuando empieza o acaba un precio específico, una regla de catálogo o un aviso de Promo Bar; y cualquier ajuste guardado en el back office lo invalida todo. Los ajustes que los módulos escriben solos en cada visita no cuentan: los aprende y los ignora.
- Rápido desde el primer visitante. Un precalentamiento (un botón o una tarea cron) prepara la portada, las categorías y los productos más vendidos antes de que llegue nadie, y los filtros de la búsqueda por facetas también salen de la caché.
- Funciona en cualquier hosting. Sin overrides, sin tocar el
.htaccessni el servidor, sin extensiones de PHP. Se instala desactivado y se desinstala sin dejar rastro. - Transparente. El back office muestra cuántas páginas sirve desde la caché, el tiempo de respuesta con y sin caché y la espera ahorrada, y cada respuesta lleva la cabecera
X-Ecom-Cache(HIT,MISSoBYPASScon el motivo).
Y lo que no hace, para que decidas con todos los datos: como responde desde PrestaShop (sin servidor especial), una página desde la caché sigue pasando por el arranque de PHP, y las fichas de producto para clientes con sesión vienen desactivadas hasta que la comprobación confirme que ningún módulo imprime ahí algo personal sin cubrir. Si necesitas el máximo absoluto con millones de visitas, una caché de servidor bien configurada puede convenirte más. Para la mayoría de tiendas, donde casi todo el tráfico nuevo llega sin sesión desde Google, anuncios y newsletters, Page Cache acelera justo esas visitas sin ningún riesgo.
¿Quieres verlo todo junto? En Acelerar PrestaShop reunimos la caché de página, los filtros, el buscador y el checkout, con lo que medimos y por dónde empezar.
Fuentes
- Portent, Site Speed is (Still) Impacting Your Conversion Rate (2022).
- Deloitte Digital y Google, Milliseconds Make Millions (2020).
- Think with Google, estadísticas de tiempo de carga.
- JPresta, Page Cache Ultimate (descripción del módulo).
- LiteSpeed Technologies, LiteSpeed Cache para PrestaShop.