Guía para optimizar la velocidad de PrestaShop en servidores Linux
¿Tu tienda PrestaShop va lenta? No te preocupes, no eres el único. Una tienda online que tarda más de 3 segundos en cargar puede hacer que pierdas hasta el 50% de tus visitas antes de que vean tus productos.
La buena noticia es que optimizar PrestaShop en un servidor Linux no es una tarea de magia negra. Con una serie de pasos lógicos, ajustes de configuración y buenas prácticas, puedes lograr que tu tienda vuele. En esta guía extensa y práctica, vamos a desgranar, paso a paso, cómo mejorar el rendimiento PrestaShop desde cero, pensando en usuarios que no son expertos en sistemas.
Vamos a ello.
Primeros pasos: Diagnóstico y configuración base
Antes de tocar nada, necesitas saber dónde estás parado. No sirve de nada cambiar ajustes a ciegas. Vamos a hacer una fotografía del estado actual de tu tienda.
Mide la velocidad actual de tu PrestaShop
Para saber si los cambios funcionan, necesitas una métrica inicial. Usa herramientas gratuitas como:
- GTmetrix: Te da una puntuación de A a F y te dice exactamente qué está pesando más.
- Google PageSpeed Insights: La herramienta de Google, enfocada en la experiencia de usuario y en el Core Web Vitals.
- Pingdom Tools: Muy visual y rápida para ver el tiempo de carga total.
Realiza la prueba 3 veces en horas diferentes y anota la media. Ese será tu punto de partida. Si tu tiempo de carga supera los 3 segundos, esta guía es para ti.
Activa el modo mantenimiento mientras trabajas
Si tu tienda ya tiene visitas, no querrás que vean errores mientras haces ajustes. Ve a Parámetros avanzados > Mantenimiento y actívalo. Pon un mensaje amable o simplemente actívalo para que solo tú puedas verla.
Ajustes internos de PrestaShop: El panel de control
PrestaShop trae un panel de rendimiento bastante completo. Muchos usuarios lo ignoran, pero aquí es donde se gana (o se pierde) la primera batalla.
Activa la caché (Sí o Sí)
La caché guarda versiones estáticas de tus páginas para que el servidor no tenga que "pensar" cada vez que alguien entra. Es el primer paso obligatorio para optimizar PrestaShop.
Ve a Parámetros avanzados > Rendimiento.
- Caché: Actívala. Te recomiendo elegir "Caché de archivos" (File Cache). Es la más compatible con casi todos los servidores Linux.
- Caché de combinación de JavaScript y CSS: Activa la opción de "Combinar JavaScript" y "Combinar CSS". Esto reduce el número de peticiones al servidor.
- Minificar HTML, minificar CSS y minificar JavaScript: Actívalas también. Esto elimina espacios y comentarios del código, haciendo que los archivos pesen menos.
[INFO] Si después de activar la caché ves que algo se ve "roto" (como un botón sin estilo), no te asustes. Simplemente ve a Parámetros avanzados > Rendimiento y haz clic en "Vaciar la caché" (el botón de la escoba). Esto regenera todo.
Configura el ciclo de vida de la caché
Justo debajo de las opciones de caché, verás un campo llamado "Número de días que se mantienen las plantillas".
- Si tu tienda cambia poco (precios estables, pocos productos nuevos), pon 30 días.
- Si es una tienda muy dinámica, pon 7 días.
Esto evita que PrestaShop revise y regenere los archivos de plantilla constantemente, lo cual consume mucha CPU.
Desactiva las funciones que no usas
PrestaShop viene con muchas características que quizá no necesitas. Cada una consume recursos.
En Parámetros avanzados > Rendimiento, busca la sección "Funciones" (o "Características"). Desactiva las que no uses:
- Alias: Si no usas URL personalizadas.
- Comparación de productos: Si no tienes esa opción en tu plantilla.
- Búsqueda por etiquetas: Si usas el buscador estándar.
Cada función desactivada libera memoria del servidor.
Optimización a nivel de servidor Linux (La clave del éxito)
Aquí es donde realmente se nota la diferencia. Un servidor mal configurado hundirá a PrestaShop, por muy buenos ajustes que hagas en el panel.
Elige el PHP correcto y su configuración
PrestaShop funciona con PHP. La versión de PHP es crítica.
- Versión de PHP: Usa PHP 8.1 o superior. Es el doble de rápido que las versiones antiguas (como PHP 5.6 o 7.0). Si tu hosting no lo ofrece, pide un cambio o considera mudarte.
- Opciones de PHP (php.ini): Entra al archivo de configuración de PHP de tu servidor (normalmente en
/etc/php/8.1/apache2/php.inio similar) y ajusta estos valores:
memory_limit = 512M
max_execution_time = 300
max_input_vars = 5000
opcache.enable = 1
opcache.memory_consumption = 128
opcache.max_accelerated_files = 20000
realpath_cache_size = 4096K
realpath_cache_ttl = 600
- memory_limit: PrestaShop es glotón. 256M es el mínimo, 512M es lo ideal.
- opcache: Es un acelerador de PHP. Tenerlo activado es fundamental. Guarda el código PHP compilado en memoria, evitando que se procese una y otra vez.
[WARNING] Si no sabes cómo editar el
php.ini, usa tu panel de control (cPanel, Plesk, o el panel de tu VPS). Si usas Syspanel (antes conocido como HestiaCP), recuerda que el acceso es a través del puerto 2106 (ejemplo:https://tu-servidor:2106). Allí podrás editar la configuración de PHP de forma gráfica.
Instala un servidor web de alto rendimiento
Apache es el rey por defecto, pero no es el más rápido. Para rendimiento PrestaShop, tienes dos opciones mucho mejores:
- Nginx + PHP-FPM: Es la combinación ganadora. Nginx maneja las peticiones estáticas (imágenes, CSS) de forma ultrarrápida, y PHP-FPM procesa el código dinámico de forma eficiente.
- LiteSpeed (OpenLiteSpeed): Es un servidor comercial (con versión gratuita) que es increíblemente rápido y viene con su propia caché.
Si estás en un VPS, te recomiendo encarecidamente usar Nginx. La diferencia es abismal.
Configura PHP-FPM correctamente
PHP-FPM gestiona los procesos de PHP. Si lo configuras mal, tu servidor se quedará sin memoria.
Busca el archivo www.conf (normalmente en /etc/php/8.1/fpm/pool.d/www.conf) y ajusta esto:
pm = dynamic
pm.max_children = 50
pm.start_servers = 10
pm.min_spare_servers = 5
pm.max_spare_servers = 15
- pm.max_children: Es el número máximo de procesos PHP que se pueden ejecutar a la vez. Una regla simple: divide tu RAM total (en MB) entre 30. Si tienes 8GB de RAM (8192MB), divide entre 30 y te da ~273. Pero empieza con un valor conservador como 50 y ve subiendo si ves que no se llena la memoria.
[INFO] Si tu servidor se queda sin memoria (OOM), la tienda se caerá. Es mejor tener pocos procesos y rápidos que muchos y lentos.
La importancia de la base de datos
PrestaShop guarda todo en MySQL/MariaDB. Una base de datos sin optimizar es un lastre enorme.
Optimiza las tablas de la base de datos
Con el tiempo, las tablas se fragmentan. Necesitas "limpiarlas".
Puedes hacerlo desde phpMyAdmin (en tu panel de control):
- Selecciona tu base de datos de PrestaShop.
- Marca todas las tablas (clic en "Seleccionar todo").
- En el desplegable, elige "Optimizar tabla".
Esto es como desfragmentar un disco duro. Hazlo al menos una vez al mes.
Ajusta el motor de almacenamiento
Asegúrate de que todas tus tablas usen InnoDB. Es más robusto y rápido que MyISAM para transacciones.
En phpMyAdmin, puedes ver el "Motor" de cada tabla. Si alguna es MyISAM, ejecuta este SQL (reemplaza TU_BASE por el nombre de tu base):
ALTER TABLE TU_BASE.tu_tabla ENGINE = InnoDB;
Activa la caché de consultas de MySQL
Esto guarda las consultas SQL repetidas en memoria. Añade esto a tu archivo de configuración de MySQL (/etc/mysql/my.cnf):
query_cache_type = 1
query_cache_size = 128M
query_cache_limit = 2M
[WARNING] En MySQL 8.0 y MariaDB 10.5+, la caché de consultas está obsoleta y puede ser contraproducente. Si usas versiones modernas, ignora este paso. Consulta la documentación de tu sistema.
Imágenes y contenido estático (El peso pesado)
Las imágenes son, con diferencia, lo que más pesa en una tienda. Si tus fotos de producto pesan 2MB cada una, tu tienda nunca será rápida.
Comprime y redimensiona tus imágenes
- Redimensiona: Las fotos de producto no necesitan ser más grandes de 800x800 píxeles (o 1000x1000). Si las subes de 4000x4000, estás malgastando recursos.
- Formato WebP: Convierte tus imágenes a WebP. Este formato comprime mucho mejor que JPG o PNG, manteniendo la calidad. Puedes usar herramientas online gratuitas o plugins de PrestaShop para hacerlo automáticamente.
- Compresión: Si no puedes usar WebP, al menos comprime tus JPGs al 70-80% de calidad.
Utiliza una Red de Distribución de Contenido (CDN)
Una CDN guarda copias de tus imágenes, CSS y JavaScript en servidores de todo el mundo. Cuando un cliente en España visita tu tienda (que está en un servidor en EEUU), la CDN le sirve los archivos desde un servidor en Madrid o París.
- Cloudflare es la opción gratuita más popular y fácil de configurar. Solo tienes que cambiar tus servidores DNS y activar el proxy.
[TIP] Con Cloudflare, activa la opción "Brotli" para la compresión de datos y "Cache Everything" para tus archivos estáticos. Hará maravillas.
Caché de aplicaciones: El siguiente nivel
La caché interna de PrestaShop es buena, pero no es suficiente para la alta demanda. Necesitas una caché de aplicaciones (a nivel de servidor).
Instala Varnish (El rey de la caché)
Varnish es un acelerador de aplicaciones web que se coloca delante de tu servidor web. Almacena una copia de las páginas en memoria RAM y las sirve a una velocidad vertiginosa.
Para usuarios de Syspanel (HestiaCP):
- Accede a tu servidor por SSH.
- Ejecuta el script de instalación de Varnish que proporciona el panel. Normalmente se hace con un comando como
v-add-sys-varnish(consulta la documentación específica). - Una vez instalado, configura Varnish para que escuche en el puerto 80 y tu Apache/Nginx en el puerto 8080.
Configuración básica de Varnish:
En el archivo default.vcl, debes configurar el "backend" (tu servidor web) y el tiempo de caché.
vcl 4.0;
backend default {
.host = "127.0.0.1";
.port = "8080"; # Asumiendo que tu Apache/Nginx escucha aquí
}
sub vcl_recv {
# No cachear el carrito ni la zona de cliente
if (req.url ~ "^/carrito" || req.url ~ "^/mi-cuenta") {
return (pass);
}
# No cachear peticiones POST
if (req.method != "GET" && req.method != "HEAD") {
return (pass);
}
}
sub vcl_backend_response {
# Cachear durante 2 horas
set beresp.ttl = 2h;
}
[WARNING] Configurar Varnish requiere conocimientos de VCL (Varnish Configuration Language). Si no te sientes seguro, busca un tutorial específico o contrata a un profesional. Una mala configuración puede hacer que los clientes vean información de otros (¡muy grave!).
Alternativa: Caché de página completa con Nginx
Si Nginx es tu servidor web, puedes usar su módulo FastCGI Cache. Es más fácil de configurar que Varnish.
En la configuración de tu sitio en Nginx, dentro del bloque server, añade:
set $skip_cache 0;
# No cachear el carrito
if ($request_uri ~* "/carrito|/mi-cuenta") {
set $skip_cache 1;
}
location ~ \.php$ {
# ... config existente ...
fastcgi_cache prestashop_cache;
fastcgi_cache_valid 200 60m;
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
}
Esto guardará las páginas en la memoria del servidor durante 60 minutos.
Módulos y plantillas: La limpieza de primavera
Un PrestaShop lento suele ser un PrestaShop lleno de "chorradas".
Revisa y elimina módulos innecesarios
Cada módulo activo consume recursos, aunque no lo uses. Ve a Módulos > Módulos y Servicios y desactiva todo lo que no utilices.
- ¿Tienes 3 módulos de banners? Deja solo uno.
- ¿Un módulo de chat en vivo que nunca activas? Desactívalo.
- ¿Módulos de "productos relacionados" que no usas? Fuera.
[TIP] La regla de oro es: "Si no lo usas, desactívalo". Un módulo desactivado no carga su código JavaScript ni CSS en cada página.
Elige una plantilla ligera
Las plantillas premium con miles de animaciones y efectos son preciosas, pero son un lastre.
- Evita plantillas que carguen enormes librerías de JavaScript (jQuery, Bootstrap, etc.) en todas las páginas.
- Busca plantillas etiquetadas como "optimizadas para SEO" o "de carga rápida".
Si tu plantilla actual es pesada, considera invertir en una nueva o en una versión "lite" de la misma.
Mantenimiento continuo y monitorización
Optimizar no es un evento de un día. Es un proceso continuo.
Configura tareas cron
PrestaShop necesita ejecutar tareas periódicas (como enviar emails, generar sitemaps, etc.). Si estas tareas no se ejecutan, el sistema intenta hacerlas cuando hay visitas, ralentizando la tienda.
Ve a Parámetros avanzados > Base de datos (o Buscar "Cron") y copia la URL que te da PrestaShop. Luego, en tu servidor (cPanel o SSH), crea una tarea Cron que ejecute esa URL cada 5 minutos.
Monitoriza los logs del servidor
Aprende a leer los logs de error. En Linux, están en /var/log/. Busca errores de PHP o de MySQL. Si ves algo como "Allowed memory size exhausted", significa que necesitas subir el memory_limit de PHP.
Preguntas Frecuentes (FAQ) sobre velocidad en PrestaShop
¿Cuál es la mejor caché para PrestaShop?
La combinación de la caché interna de PrestaShop (Caché de archivos) + una caché de aplicación como Varnish o Nginx FastCGI Cache es la mejor. No confíes solo en una.
¿Es necesario usar un CDN?
Si tu audiencia es internacional o tu servidor está lejos de tus clientes, sí. Es la forma más rápida de reducir la latencia. Para tiendas locales, puede ser menos crítico, pero aun así recomendable.
¿Cuánto tiempo debo dedicar a esta optimización?
