Cómo optimizar el rendimiento de PrestaShop en tu servidor Linux
¿Tu tienda PrestaShop va lenta? No te preocupes, no eres el único. Es uno de los problemas más comunes cuando el negocio empieza a crecer o cuando el servidor no está bien ajustado. La buena noticia es que optimizar PrestaShop no requiere ser un gurú de la informática. Con una serie de pasos lógicos y accesibles, puedes lograr un rendimiento Prestashop excelente y ofrecer una velocidad Prestashop que tus clientes notarán al instante.
En esta guía extensa y práctica, te voy a explicar, paso a paso y sin tecnicismos innecesarios, cómo exprimir al máximo tu servidor Linux para que tu tienda vuele. Olvídate de frustraciones y carritos abandonados por culpa de la lentitud. Vamos a ello.
Antes de empezar: ¿Por qué tu PrestaShop es lento?
Entender el problema es la mitad de la solución. Una tienda online lenta no solo molesta a los visitantes, sino que también afecta a tu posicionamiento en Google. La velocidad Prestashop depende de varios factores, pero los principales suelen ser:
- El servidor: Si tu plan de hosting es básico o compartido, los recursos (CPU y RAM) son limitados.
- La configuración de PHP: Un PHP mal configurado consume demasiada memoria.
- La caché: Sin una buena caché Prestashop, el servidor tiene que "recalcular" cada página desde cero para cada visitante, lo cual es un gasto enorme de recursos.
- Imágenes y archivos pesados: Cada imagen sin optimizar es un lastre.
- Módulos mal desarrollados: Un módulo ineficiente puede ralentizar toda la tienda.
Vamos a atacar cada uno de estos puntos. A lo largo del artículo, te daré trucos y comandos que puedes copiar y pegar en tu terminal. Recuerda que trabajar con el servidor requiere calma; si no estás seguro de algo, haz una copia de seguridad antes (¡siempre!).
Paso 1: Optimiza el servidor Linux (La base de todo)
Antes de tocar PrestaShop, debes asegurarte de que tu "casa" (el servidor) esté limpia y ordenada. Si tu servidor es un panel de control como Syspanel (acceso por el puerto 2106), es probable que ya tengas una base sólida. Pero vamos a ajustar el sistema operativo.
1.1. Actualiza el sistema
Un sistema desactualizado es un sistema lento y con agujeros de seguridad. Conéctate por SSH a tu servidor y ejecuta:
sudo apt update && sudo apt upgrade -y
Esto actualizará todos los paquetes del sistema. Es un primer paso aburrido pero vital.
1.2. Gestiona los servicios que no usas
Cada servicio en ejecución (Apache, MySQL, etc.) consume memoria. Revisa qué tienes activo. Por ejemplo, si no usas FTP, desactívalo.
sudo systemctl list-units --type=service --state=running
Si ves algo como proftpd o vsftpd y no lo usas, puedes detenerlo y deshabilitarlo:
sudo systemctl stop vsftpd
sudo systemctl disable vsftpd
[TIP] No desactives servicios que no conozcas. Si dudas, búscalos antes. Una mala desactivación puede tumbar tu web.
1.3. Ajusta el planificador de tareas (Cron)
A veces hay tareas cron que se ejecutan demasiado a menudo y saturan el disco. Revisa el cron del sistema:
crontab -e
Y el cron de los usuarios (como www-data):
sudo crontab -u www-data -e
En PrestaShop, las tareas de mantenimiento (como el borrado de sesiones) no necesitan ejecutarse cada minuto. Ajusta la frecuencia a algo razonable, como cada 15 o 30 minutos.
Paso 2: Configuración de PHP a medida (Clave para el rendimiento)
PHP es el motor que ejecuta PrestaShop. Si está mal configurado, todo irá lento. Aquí tienes los ajustes más importantes en el archivo php.ini (normalmente en /etc/php/8.x/apache2/php.ini o similar).
2.1. Aumenta el límite de memoria (memory_limit)
PrestaShop es un "comilón" de memoria. Con un límite bajo, el servidor se ahoga. Busca esta línea y cámbiala:
memory_limit = 512M
O incluso 768M si tu servidor tiene suficiente RAM. Este es uno de los primeros ajustes para optimizar prestashop que debes hacer.
2.2. Ajusta el tiempo máximo de ejecución (max_execution_time)
Si tu tienda tarda en procesar una acción (como importar productos), no queremos que se corte. Ponlo a 300 segundos.
max_execution_time = 300
2.3. Mejora el manejo de variables (max_input_vars)
PrestaShop usa muchos parámetros en formularios. Si este número es bajo, perderás datos. Ponlo a 5000.
max_input_vars = 5000
2.4. Activa el Caché de Opcode (OPcache)
Esta es una de las opciones más potentes para la velocidad Prestashop. Guarda el código PHP ya compilado en memoria, evitando recompilar en cada petición. Asegúrate de que esté activo y configurado así:
opcache.enable=1
opcache.memory_consumption=256
opcache.interned_strings_buffer=16
opcache.max_accelerated_files=20000
opcache.revalidate_freq=2
[WARNING] Si tu proveedor de hosting no te permite editar php.ini, contacta con ellos. Estos ajustes son esenciales para un buen rendimiento.
2.5. Activa el Caché de Realpath
Esto ayuda a que el sistema no tenga que calcular rutas de archivos constantemente.
realpath_cache_size = 4096K
realpath_cache_ttl = 600
Después de modificar php.ini, reinicia el servicio web (Apache o Nginx):
sudo systemctl restart apache2
Paso 3: La Caché de PrestaShop (El corazón de la velocidad)
Ahora pasamos a la configuración interna de PrestaShop. La caché Prestashop es tu mejor amiga. Sin ella, cada visita es un suplicio para el servidor.
3.1. Activa la caché en el panel de administración
Ve a tu back-office: Parámetros avanzados > Rendimiento.
- Caché: Actívala. Te recomiendo elegir "Caché de archivos" (File Cache) como sistema, ya que es la más fiable en servidores Linux.
- Combinar y comprimir archivos: Activa "Combinar archivos JavaScript" y "Combinar archivos CSS". Esto reduce el número de peticiones al servidor.
- Compresión: Activa "Comprimir con GZIP" si tu servidor lo permite.
3.2. Utiliza Memcached o Redis (Nivel Experto)
Si tu servidor tiene recursos, esta es la mejor opción para la caché Prestashop. Es como pasar de un coche a un avión. En lugar de guardar la caché en archivos (más lento), la guardas en la memoria RAM.
Primero, instala Memcached en tu servidor:
sudo apt install memcached php-memcached
Luego, en el back-office de PrestaShop, en la misma sección de Rendimiento, selecciona "Memcached" y configura la IP del servidor (normalmente 127.0.0.1) y el puerto (11211).
[INFO] Si usas Syspanel, este panel facilita mucho la gestión de servicios como Memcached o Redis desde su interfaz (acceso en el puerto 2106). Es una opción muy cómoda para no tener que usar la terminal.
3.3. Activa la Caché de Smarty (Plantillas)
En la misma página de Rendimiento, busca la opción de Caché de plantillas. Actívala y ponla en "Recopilar" o "Recompilar" solo cuando estés desarrollando. En producción, déjala en "Nunca recompilar".
Paso 4: Optimización de la Base de Datos (MySQL/MariaDB)
La base de datos es donde se guardan productos, pedidos y clientes. Si está sucia, todo va lento.
4.1. Limpia los registros no deseados
PrestaShop guarda mucha basura (sesiones antiguas, carritos abandonados, etc.). Puedes hacerlo desde el back-office en Parámetros avanzados > Base de datos o directamente con SQL en phpMyAdmin.
DELETE FROM ps_connections WHERE date_add < DATE_SUB(NOW(), INTERVAL 1 MONTH);
DELETE FROM ps_connections_page WHERE time_start < DATE_SUB(NOW(), INTERVAL 1 MONTH);
DELETE FROM ps_guest WHERE last_visit < DATE_SUB(NOW(), INTERVAL 1 MONTH);
4.2. Optimiza las tablas
Usa este comando SQL para optimizar todas las tablas de tu base de datos:
OPTIMIZE TABLE nombre_de_tu_tabla;
O para todas a la vez (si tienes acceso a la terminal):
mysqlcheck -u usuario -p --optimize --all-databases
4.3. Ajusta la configuración de MySQL
En el archivo /etc/mysql/mysql.conf.d/mysqld.cnf, asegúrate de tener un buffer pool razonable para InnoDB:
[mysqld]
innodb_buffer_pool_size = 1G
innodb_log_file_size = 256M
Ajusta el 1G a la RAM de tu servidor. Si tienes 4GB de RAM, puedes poner 2G. Este es un cambio muy significativo para el rendimiento Prestashop.
Reinicia MySQL:
sudo systemctl restart mysql
Paso 5: Imágenes y Multimedia (El peso visual)
Las imágenes son el 70% del peso de una página. Si no las optimizas, tu velocidad Prestashop se irá al carajo.
5.1. Activa la compresión de imágenes en PrestaShop
Ve a Parámetros avanzados > Rendimiento y busca la sección de Imágenes. Activa la compresión JPEG y PNG. Puedes ponerla en un 85% para un buen equilibrio entre calidad y peso.
5.2. Usa formato WebP
Este formato es mucho más ligero que el JPG o PNG. PrestaShop 1.7.7 y superiores lo soportan nativamente en muchas configuraciones. Si no lo tienes, busca un módulo gratuito que lo active. Es un cambio brutal.
5.3. Redimensiona las imágenes antes de subirlas
No subas una imagen de 5000px de ancho si tu tienda solo la muestra a 800px. Redimensiona y comprime en tu ordenador antes de subirla. Herramientas como Photoshop, GIMP o incluso servicios online gratuitos (TinyPNG) son perfectas.
[TIP] Aplica la regla del "peso ligero": cada imagen de producto no debería superar los 100-150 KB.
Paso 6: Configuración del Servidor Web (Apache/Nginx)
El servidor web es el portero que recibe a los visitantes. Una mala configuración puede bloquear la entrada.
6.1. Activa la compresión GZIP
Si no lo has hecho desde PrestaShop, actívalo a nivel de servidor. En Apache, puedes crear un archivo .htaccess en la raíz de tu tienda con:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/json
</IfModule>
6.2. Activa el Caché de Navegador (Leverage Browser Caching)
Esto le dice al navegador del cliente que guarde ciertos archivos (CSS, JS, imágenes) en su caché local, para que no tenga que descargarlos en cada visita. Añade esto a tu .htaccess:
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access plus 1 year"
ExpiresByType image/jpeg "access plus 1 year"
ExpiresByType image/gif "access plus 1 year"
ExpiresByType image/png "access plus 1 year"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/javascript "access plus 1 month"
</IfModule>
6.3. Usa HTTP/2
Este protocolo permite cargar múltiples archivos a la vez, en lugar de uno a uno. Si usas Apache, actívalo con:
sudo a2enmod http2
Y añade en tu archivo de configuración del sitio:
Protocols h2 http/1.1
Recuerda reiniciar Apache después.
Paso 7: CDN (Red de Distribución de Contenido)
Una CDN guarda una copia de tu tienda (estática) en servidores de todo el mundo. Cuando un cliente de México entra, la web se carga desde un servidor en México, no desde tu servidor en Alemania. Esto reduce la latencia drásticamente.
Servicios como Cloudflare (gratuito) son excelentes. Solo tienes que cambiar tus servidores DNS para que apunten a Cloudflare y ellos se encargan del resto. Es una de las mejores inversiones de tiempo para optimizar prestashop.
[INFO] La CDN no solo acelera, sino que también protege tu tienda de ataques DDoS, mejorando la seguridad general.
Paso 8: Monitorización y Pruebas (El control de calidad)
Después de todos estos cambios, es hora de comprobar si ha funcionado. No te fíes de "parece que va más rápido". Usa herramientas objetivas.
8.1. Google PageSpeed Insights
Introduce la URL de tu tienda y te dará una nota del 0 al 100, además de sugerencias específicas. Es la herramienta estándar.
8.2. GTmetrix
Otra herramienta excelente que te muestra un desglose detallado de qué es lo que tarda más en cargar.
8.3. Herramientas de línea de comandos
Si te gusta la terminal, puedes usar curl para medir los tiempos de respuesta:
curl -w "Tiempo total: %{time_total}s\n" -o /dev/null https://tutienda.com
Un tiempo inferior a 2 segundos es bueno. Menos de 1 segundo es excelente.
Preguntas Frecuentes (FAQ)
¿Qué es más importante, la caché de PrestaShop o la del servidor?
Ambas son fundamentales, pero si tuviera que elegir, la caché Prestashop (la de archivos o Memcached) es la que más impacto tiene en el tiempo de carga de las páginas dinámicas (como el carrito o la ficha de producto). La del servidor (OPcache) ayuda a que el código PHP se ejecute más rápido, pero la de PrestaShop evita que se ejecute todo el proceso en cada visita.
¿Es mejor usar Nginx o Apache para PrestaShop?
Nginx es generalmente más rápido y consume menos memoria que Apache, especialmente con mucho tráfico. Sin embargo, Apache es más fácil de configurar para principiantes y la mayoría de los paneles de control (como Syspanel) lo integran perfectamente. Si tu tráfico es alto, considera Nginx; si no, Apache es más que suficiente.
¿Puedo romper mi tienda si cambio la configuración de PHP?
Sí, existe la posibilidad. Por eso es crucial hacer una copia de seguridad de tu php.ini y de tu base de datos antes de tocar nada. Si algo sale mal, puedes revertir los cambios. Los ajustes que te he dado son estándar y seguros, pero cada servidor es un mundo.
¿Cada cuánto tiempo debo optimizar la base de datos?
Depende del tamaño de tu tienda. Si tienes una tienda pequeña, una vez al mes es suficiente. Si tienes mucho tráfico y miles de pedidos, te recomiendo hacerlo cada semana. Puedes automatizar este proceso con un script cron.
¿Merece la pena pagar por una CDN premium?
Para empezar, la versión gratuita de Cloudflare es más que suficiente
