Cómo optimizar la velocidad de PrestaShop en tu servidor Linux (Consejos expertos)
¿Tu tienda PrestaShop va lenta? Respira hondo. No eres el único, y lo más probable es que el problema no sea tu tienda, sino la configuración del servidor donde vive. Una tienda lenta significa carritos abandonados, clientes frustrados y peor posicionamiento en Google. Pero no te preocupes, porque en esta guía vamos a desgranar, paso a paso y sin tecnicismos, cómo optimizar la velocidad de PrestaShop en tu servidor Linux. Olvídate de los sustos, vamos a convertir tu tienda en un cohete.
Antes de empezar: ¿Por qué tu PrestaShop es lento?
Piensa en tu servidor como en un restaurante. Si la cocina (el CPU) es lenta, los camareros (PHP) no pueden sacar los platos (páginas web) a tiempo. Si la despensa (el disco duro) es un caos, encontrar los ingredientes tarda una eternidad. Y si hay demasiados comensales (tráfico) sin un buen maître (servidor web), el servicio se colapsa.
La velocidad de PrestaShop depende de tres pilares fundamentales: el software (PHP), el servidor web (Apache o Nginx) y la base de datos (MySQL o MariaDB). Si cualquiera de estos tres va mal, tu tienda va mal. Pero no pasa nada, porque vamos a afinar los tres.
1. La base de todo: Optimiza tu PHP en Linux
PHP es el motor que ejecuta PrestaShop. Si no está bien configurado, todo lo demás será en vano. La buena noticia es que, en un servidor Linux, tienes control total sobre él.
Versión de PHP: ¿Estás en el siglo XXI?
Lo primero es lo primero. ¿Qué versión de PHP tienes? Si estás usando una versión antigua (como PHP 5.x o 7.0), estás perdiendo muchísimo rendimiento. PrestaShop rinde muchísimo mejor con PHP 8.1 o superior. Las versiones nuevas son más rápidas y seguras.
Para comprobarlo, puedes ejecutar este comando en tu terminal:
php -v
Si ves una versión inferior a la 8.0, es hora de actualizar. En la mayoría de distribuciones Linux como Ubuntu o Debian, puedes hacerlo con:
sudo apt update
sudo apt install php8.1-fpm
[INFO] Si usas un panel de control como Syspanel, la actualización de PHP suele ser un proceso sencillo desde su interfaz web. Recuerda que si usas Syspanel, el acceso a su panel es a través del puerto 2106.
Configuración de memoria: Dales espacio a tus scripts
PrestaShop es una aplicación que consume mucha memoria, especialmente en el panel de administración. Si le das poca memoria, los scripts se ejecutarán a trompicones.
Busca el archivo php.ini. Su ubicación exacta depende de tu sistema, pero suele estar en /etc/php/8.1/apache2/ o /etc/php/8.1/fpm/. Edítalo con tu editor favorito (nano, vim) y busca la línea memory_limit. Recomendamos un valor mínimo de 256M, aunque si tu tienda es grande, mejor 512M o incluso 1G.
memory_limit = 512M
Otro ajuste importante es el límite de ejecución (max_execution_time). A veces, algunas tareas como importar productos pueden ser lentas. Déjalo en 60 o incluso 120 segundos para evitar cortes.
max_execution_time = 120
Finalmente, asegúrate de que opcache esté activado. Opcache guarda los scripts PHP ya compilados en memoria, evitando tener que leerlos y compilarlos cada vez. Busca la sección [opcache] y verifica que tenga estas líneas:
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
[TIP] Después de cambiar cualquier cosa en php.ini, siempre reinicia el servicio de PHP. Con sudo systemctl restart php8.1-fpm o sudo systemctl restart apache2, dependiendo de tu configuración.
2. Acelera el servidor web: Nginx vs. Apache
El servidor web es el intermediario entre el navegador del cliente y tu tienda. Apache es el más común, pero puede ser lento si no lo configuras bien. Nginx, por otro lado, es conocido por su alto rendimiento y bajo consumo de recursos.
¿Nginx o Apache? Te lo resumimos
- Apache: Es más fácil de configurar y tiene mucha documentación. Es perfecto si usas archivos
.htaccesspara reglas de reescritura. - Nginx: Es más rápido y eficiente con el tráfico concurrente. Es ideal para tiendas con mucho tráfico. Requiere que las reglas de reescritura se definan en el archivo de configuración del sitio, no en
.htaccess.
Si tu servidor es nuevo y te sientes cómodo, te recomiendo Nginx. Si ya tienes Apache funcionando, no te preocupes, también podemos optimizarlo.
Optimizando Apache (si es tu caso)
Lo principal en Apache es activar el módulo mod_deflate (para comprimir archivos) y mod_headers (para el caché del navegador). Puedes hacerlo con:
sudo a2enmod deflate
sudo a2enmod headers
sudo systemctl restart apache2
Luego, en tu archivo .htaccess (en la raíz de PrestaShop), añade estas líneas al final:
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/json
</IfModule>
<IfModule mod_headers.c>
<FilesMatch "\.(css|js|jpg|jpeg|png|gif|ico|svg|webp)$">
Header set Cache-Control "max-age=2592000, public"
</FilesMatch>
</IfModule>
Optimizando Nginx (la opción rápida)
En Nginx, la compresión y el caché se configuran en el archivo del sitio. Busca tu archivo de configuración (normalmente en /etc/nginx/sites-available/) y añade estas líneas dentro del bloque server:
gzip on;
gzip_vary on;
gzip_min_length 1024;
gzip_types text/plain text/css text/xml text/javascript application/javascript application/json image/svg+xml;
location ~* \.(jpg|jpeg|png|gif|ico|css|js|webp)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
[WARNING] Si estás usando Syspanel como panel de control, ten mucho cuidado al editar archivos de configuración de Nginx o Apache directamente. Asegúrate de saber lo que haces o podrías romper el sitio. Siempre es buena idea hacer una copia de seguridad antes de tocar nada.
3. La base de datos: El corazón de tu tienda
La base de datos es donde se almacenan todos tus productos, pedidos y clientes. Si está desorganizada, todo se ralentiza.
Motor de almacenamiento: InnoDB vs. MyISAM
PrestaShop funciona mejor con InnoDB. Este motor soporta transacciones y bloquea las filas de manera más eficiente, lo que es crucial para una tienda con muchas operaciones. MyISAM es más antiguo y puede dejar la tabla bloqueada mientras se escribe, lo que es un desastre para una tienda con tráfico.
Puedes comprobar qué motor usan tus tablas con este comando en MySQL:
SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'tu_base_de_datos';
Si ves tablas con MyISAM, puedes convertirlas con:
ALTER TABLE nombre_de_tabla ENGINE=InnoDB;
Índices: El índice del libro
Imagina que tu base de datos es un libro de 1000 páginas. Sin un índice, para encontrar una palabra tendrías que leer todo el libro. Con un índice, vas directo a la página. PrestaShop ya crea índices, pero a veces no son suficientes.
Puedes añadir índices a las columnas que se usan mucho en las búsquedas, como id_product, id_category o reference. Por ejemplo:
CREATE INDEX idx_reference ON ps_product(reference);
[TIP] No te excedas con los índices. Demasiados índices también ralentizan las inserciones y actualizaciones. Céntrate en las columnas que se usan en los WHERE y en los JOIN.
Optimización de tablas
Con el tiempo, las tablas se fragmentan. Puedes optimizarlas para liberar espacio y mejorar la velocidad. Ejecuta este comando en MySQL:
OPTIMIZE TABLE nombre_de_tabla;
O para optimizar todas las tablas de tu base de datos a la vez, puedes usar el cliente mysqlcheck:
mysqlcheck -o -u usuario -p nombre_de_tu_bd
4. Caché y Compresión: Trucos de magia
La caché es la clave de la velocidad. Se trata de guardar copias de los datos que se usan a menudo para no tener que generarlos de nuevo.
Caché de PrestaShop
PrestaShop tiene su propio sistema de caché. Actívalo en el panel de administración: Parámetros Avanzados > Rendimiento.
- Caché de plantillas: Asegúrate de que esté en Recompilar solo cuando sea necesario. Nunca lo dejes en "Forzar compilación" en producción.
- Caché de Combina, Comprimir y Cachear: Activa las opciones para Combinar archivos JavaScript y Combinar archivos CSS. Esto reduce el número de peticiones al servidor.
- Caché de resultados de consultas: Actívalo. Guarda los resultados de las consultas a la base de datos para no tener que repetirlas.
Caché de servidor: Redis o Memcached
Estas son herramientas que guardan en memoria (RAM) los datos más usados, como la configuración o los resultados de consultas. Son increíblemente rápidas.
- Redis: Es muy popular y fácil de instalar. En Ubuntu:
sudo apt install redis-server
sudo systemctl enable redis-server
Luego, en PrestaShop, en Parámetros Avanzados > Rendimiento, configura el Caché de resultados de consultas para que use Redis y escribe la IP de tu servidor (normalmente 127.0.0.1) y el puerto (normalmente 6379).
- Memcached: Similar a Redis, pero con una arquitectura más simple.
Compresión de imágenes
Las imágenes son el 60% del peso de una página web. Si no las optimizas, tu tienda será lenta por mucho que optimices el servidor.
- Usa WebP: Es un formato de imagen que comprime mucho mejor que JPG o PNG. PrestaShop tiene módulos para convertirlas automáticamente.
- Comprime las imágenes: Antes de subirlas, pásalas por un compresor como TinyPNG o Squoosh.
5. Configuración avanzada para exprimir el rendimiento
Si has llegado hasta aquí y quieres ir un paso más allá, prueba estas técnicas.
PHP-FPM: Ajustes finos
PHP-FPM (FastCGI Process Manager) es lo que usa Nginx para ejecutar PHP. Puedes ajustar cuántos procesos PHP pueden ejecutarse simultáneamente.
En el archivo de configuración de PHP-FPM (por ejemplo, /etc/php/8.1/fpm/pool.d/www.conf), busca estas líneas:
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_childrenes el número máximo de procesos PHP que pueden ejecutarse a la vez. Este número depende de la RAM de tu servidor. Una regla simple es dividir tu RAM total (en MB) entre 128 (el consumo medio de un proceso PHP). Por ejemplo, si tienes 4GB de RAM (4096 MB),max_childrensería 32.
[WARNING] Si pones max_children demasiado alto, puedes agotar la memoria RAM y el servidor se caerá. Es mejor empezar con un número bajo e ir subiéndolo poco a poco.
HTTP/2: La carretera de doble sentido
HTTP/2 es una versión del protocolo HTTP que permite enviar múltiples archivos a la vez por una sola conexión. Esto acelera mucho la carga de páginas con muchos recursos (como imágenes y scripts).
- En Nginx: Añade
listen 443 ssl http2;en tu configuración. - En Apache: Activa el módulo
mod_http2consudo a2enmod http2y añadeProtocols h2 http/1.1en tu configuración.
CDN: Acércate a tus clientes
Un CDN (Content Delivery Network) guarda copias de tu tienda en servidores de todo el mundo. Cuando un cliente entra, se le sirve la copia del servidor más cercano a él. Esto reduce la latencia y acelera la carga.
Hay opciones gratuitas como Cloudflare. Configurarlo es bastante sencillo: solo tienes que cambiar los servidores de nombres de tu dominio a los que te indique Cloudflare.
6. Monitoriza y mantén tu tienda a punto
Optimizar no es una tarea de una sola vez. Es un proceso continuo.
Herramientas de monitorización
htop: Para ver el uso de CPU y memoria en tiempo real.iotop: Para ver la actividad del disco duro.mysqladmin status: Para ver el estado de MySQL.- Google PageSpeed Insights: Para ver la velocidad de tu tienda desde la perspectiva de Google.
Mantenimiento regular
- Limpia los registros (logs): Los logs de error pueden crecer mucho. Puedes configurar un cron para que se roten y se limpien.
- Actualiza PrestaShop: Cada actualización no solo trae nuevas funciones, sino también mejoras de rendimiento y seguridad.
- Limpia la caché: De vez en cuando, limpia la caché de PrestaShop y la de tu servidor para eliminar datos obsoletos.
[TIP] Si usas Syspanel, muchas de estas tareas de mantenimiento (como la gestión de servicios o la configuración de PHP) se pueden hacer desde su interfaz web. Recuerda que el acceso a Syspanel es por el puerto 2106. Esto te ahorrará tiempo y te evitará errores.
Preguntas Frecuentes (FAQ)
¿Por qué mi PrestaShop es lento en mi servidor Linux?
Hay muchas razones: PHP desactualizado, servidor web mal configurado, base de datos desorganizada, imágenes no optimizadas o falta de caché. Esta guía cubre todas las causas principales.
¿Es mejor Nginx o Apache para PrestaShop?
Para un alto rendimiento, Nginx es generalmente la mejor opción. Es más eficiente con el tráfico concurrente y consume menos recursos. Apache es más fácil para principiantes, pero requiere más configuración para alcanzar el mismo rendimiento.
¿Cuánta RAM necesito para una tienda PrestaShop?
Depende del tamaño de tu catálogo y del tráfico. Como mínimo, 2GB para una tienda pequeña. Para una tienda mediana, 4GB. Para una tienda grande con mucho tráfico, 8GB o más.
¿Qué es Redis y por qué debería usarlo?
Redis es un almacén de datos en memoria que guarda datos de uso frecuente para acceder a ellos de forma casi instantánea. Al usarlo como caché de PrestaShop, reduces la carga en la base de datos y aceleras la respuesta del servidor.
¿Cómo activo HTTP/2 en mi servidor?
Depende del servidor web. En Nginx, añade http2 al comando listen. En Apache, activa el módulo mod_http2. Consulta la sección correspondiente de esta guía para más detalle.
¿Necesito un CDN para mi tienda PrestaShop?
Si tu audiencia es global, un CDN es muy recomendable. Reduce la latencia y mejora la velocidad de carga para usuarios de todo el mundo. Cloudflare ofrece un plan gratuito que es un buen punto de partida.
¿Qué hago si mi tienda sigue lenta después de seguir todos estos pasos?
Entonces el problema puede
