Factores para la correcta optimización de una tienda con Prestashop

0. Introducción general al manual

Este manual está diseñado para ofrecer una guía detallada sobre la configuración, optimización y mantenimiento de una tienda online basada en Prestashop, utilizando servidores administrados con SWPanel.

Objetivo del manual

El objetivo principal es ayudar al lector a comprender los aspectos técnicos y funcionales que afectan directamente al rendimiento de su tienda online. Cada apartado incluye información detallada sobre los factores que influyen en la velocidad de carga, la estabilidad del sistema, la seguridad y la experiencia del usuario. Además, se incluyen buenas prácticas y recomendaciones específicas para mejorar la eficiencia operativa y el posicionamiento SEO del e-commerce.

Temas tratados

Este manual abarca los siguientes temas clave:

  • Servidor de Hosting Web: Explica la elección adecuada del tipo de alojamiento (compartido o Cloud), los recursos necesarios (CPU, RAM, almacenamiento) y los parámetros de configuración (Apache, Nginx, PHP).

  • Base de Datos: Describe las configuraciones óptimas del motor de base de datos (MariaDB), así como las tareas de mantenimiento y limpieza para garantizar su eficiencia.

  • Aplicación Prestashop: Ofrece detalles sobre la configuración del sistema Smarty, CCC (Combinación, Compresión y Caché), la gestión de módulos y las actualizaciones de la plataforma.

  • Imágenes Web: Proporciona recomendaciones para la optimización de imágenes que mejoren los tiempos de carga y el SEO del sitio web.

Conceptos básicos

A continuación, se definen algunos conceptos que se utilizarán a lo largo del manual y que son fundamentales para su comprensión:

  • Prestashop: Sistema de gestión de contenidos (CMS) especializado en la creación y gestión de tiendas online.

  • SWPanel: Plataforma de gestión integral de servidores Cloud, que permite configurar y monitorizar servicios de hosting de forma sencilla y eficiente.

  • Servidor Cloud: Entorno de alojamiento virtual que ofrece recursos dedicados y escalables para alojar aplicaciones web.

  • Smarty: Motor de plantillas utilizado por Prestashop para generar el contenido HTML que se muestra al usuario.

  • CCC: Combinación, Compresión y Caché. Conjunto de técnicas que permiten reducir el peso de los archivos web y mejorar el rendimiento.

  • CDN (Content Delivery Network): Red de distribución de contenido que permite entregar los recursos estáticos (imágenes, scripts, estilos) desde servidores distribuidos geográficamente para mejorar la velocidad de carga.

1. Servidor de Hosting Web

El servidor web es uno de los factores más importantes a la hora de garantizar el buen funcionamiento y optimización de tu tienda online con Prestashop. Un servidor de calidad y con una elevada disponibilidad de recursos (vCores, RAM y HD) se traducirá en una mayor velocidad en el procesamiento de los datos para atender las solicitudes de los visitantes. De este modo la velocidad de carga de la web, visualización del contenido en el navegador y agilidad en el proceso de respuesta a las consultas a la base de datos, será mucho mas rápida y eficiente. En resumen, un servidor con un buen rendimiento se traduce en mejores resultados de SEO, evita errores de nuestro sitio web, mejora la experiencia del usuario, con lo que aumenta su confianza y por lo tanto las ventas online.

1.1 Tipo de servidor web - (Compartido / Cloud)

El sitio web de una tienda online demanda siempre más recursos del servidor que cualquier otro, como puede ser un blog o una web corporativa. Además cuanto mayor sea el volumen de productos de la tienda online o su número de visitantes mayor será la demanda de recursos para atender rápida y eficientemente las solicitudes de los clientes. Es por este motivo que se debe elegir el tipo de alojamiento web de nuestra tienda online teniendo en cuenta, no tan solo su dimensión actual, sino también la futura, ya que uno de los objetivos de nuestro e-commerce será conseguir su crecimiento en el número de clientes y las ventas.

Actualmente existen diferentes tipos de alojamiento para una tienda online siendo los más utilizados los siguientes:

a) Servidor Compartido (Hosting web Compartido) - Es el servicio de alojamiento más económico ya que se trata de un servidor en el que se alojan multitud de sitios web que comparten los mismos recursos (vCores, Memoria RAM y HD). Los parámetros de configuración, correspondientes a los recursos del servidor a los cuales puede acceder y hacer uso la web, están siempre limitados, de modo que no siempre es posible adaptarlos para cubrir los requisitos de configuración o desempeño de la web. Es por este motivo que se recomienda este tipo de alojamiento web para tiendas relativamente pequeñas, que no dispongan de una gran cartera de productos y con un bajo número de visitantes/clientes.

b) Servidor Cloud - Es un servidor virtual con una alta disponibilidad y garantía de continuidad del servicio, debido a la redundancia de la infraestructura sobre la que está desplegado y al que se le asignan unos recursos de hardware exclusivos (vCores, Memoria RAM, HD), que pueden ser escalables en cualquier momento, lo que posibilita adaptarlos constantemente a las necesidades de crecimiento de la tienda online. Todos los recursos del servidor están completamente disponibles para la tienda online lo que permite asignarlos por completo a los requisitos de programación, configuración y demanda del e-commerce. Este tipo de servidores Cloud suponen un coste mayor del alojamiento web debido a su mayor rendimiento y calidad, por lo que se recomienda su uso para tiendas online con una elevada cartera de productos, número de clientes y ventas.

1.2 Recursos del servidor web - (CPU / RAM / Disco)

a) CPU - Procesador (vCores) - Cuanto mayor sea el número y potencia en GHz de los vCores asignados al servidor mejor será su velocidad de respuesta a la hora de ejecutar los cálculos necesarios para atender las consultas de la base de datos, carga del contenido web en la memoria RAM y visualización posterior en el navegador. En resumen, un mayor valor en el número y velocidad de los vCores asignados al servidor se traduce en un mejor rendimiento global de nuestra tienda online. Cuando el número de vCores asignados al servidor llega a más del 90% de su capacidad de proceso, empieza a sufrir sobrecarga, lo que reduce considerablemente la velocidad de carga de la tienda online. Es por este motivo que se debe aprovisionar al servidor de un número de vCores suficiente, para que la carga de proceso sostenida, no supere de forma continua más del 60% o 70% de la capacidad del servidor, reservando de este modo un margen prudencial en la capacidad de proceso del servidor del 30% o 40% para atender picos puntuales y evitar la sobrecarga de procesos que pueden provocar que la web se ralentice o incluso deje de responder. Se recomienda que para una tienda con Prestashop el servidor Cloud cuente con un mínimo de 4 vCores con velocidades superiores a 2 GHz.

b) Memoria RAM - La memoria RAM juega un papel crucial en el rendimiento de tu tienda online. Actúa como un espacio de almacenamiento temporal para los datos que el procesador necesita en tiempo real. Cuando un visitante accede a tu tienda, el servidor web recibe la petición y el procesador ejecuta los cálculos necesarios para generar el contenido de la página. Este contenido se transfiere a la RAM, que a su vez lo envía al navegador del visitante para su visualización.

Si la cantidad de datos generados por el procesador excede la capacidad de la RAM, el servidor se satura y deja de responder, interrumpiendo la experiencia de compra de tus clientes y afectando negativamente a tu negocio.

Por lo tanto, es fundamental dimensionar correctamente la RAM de tu servidor Cloud. A medida que tu tienda recibe más visitas simultáneas, la demanda de RAM aumenta. Para garantizar un rendimiento óptimo, te recomendamos:

  • Aprovisionar suficiente RAM: Asegúrate de que tu servidor tenga suficiente RAM para manejar el tráfico habitual de tu tienda.
  • Considerar picos de tráfico: Reserva un margen de RAM adicional para absorber posibles picos de tráfico, como promociones o campañas publicitarias.
  • Recomendación para Prestashop: Para tiendas online construidas con Prestashop, sugerimos comenzar con un mínimo de 4 GB de RAM, y aumentar esta cantidad a medida que tu tienda crezca.

Al optimizar la RAM de tu servidor, aseguras una experiencia de compra fluida para tus clientes, lo que se traduce en mayor satisfacción y mejores resultados para tu negocio.

c) Capacidad y tipo de disco duro - Para optimizar el rendimiento de tu tienda online, recomendamos encarecidamente el uso de discos SSD. Estos discos ofrecen velocidades de lectura y escritura de datos significativamente superiores a los discos duros tradicionales, lo que se traduce en una navegación más fluida y rápida para tus clientes.

Beneficios clave de los discos SSD:

  • Mayor velocidad: Acceso instantáneo a los datos, reduciendo los tiempos de carga de las páginas.
  • Acceso simultáneo: Capacidad para manejar múltiples solicitudes de datos al mismo tiempo, ideal para tiendas con mucho tráfico.
  • Eficiencia superior: La controladora de memoria integrada del SSD gestiona los datos de forma inteligente, liberando a la CPU de tareas de control de integridad.

Además de la velocidad, es crucial dimensionar correctamente el espacio de almacenamiento de tu servidor Cloud. El disco debe ser lo suficientemente grande para alojar el sistema operativo, el software instalado, el contenido web y la base de datos de tu tienda, que crecerá a medida que aumente el tráfico.

Recomendaciones para Prestashop:

  • Para un servidor Cloud con Linux, Apache/Nginx, MySQL/MariaDB y PHP, recomendamos un mínimo de 20 GB de espacio en disco.
  • A medida que tu tienda crezca, considera aumentar el espacio de almacenamiento para garantizar un rendimiento óptimo.

Al elegir discos SSD y dimensionar correctamente el espacio de almacenamiento, aseguras una experiencia de compra excepcional para tus clientes, lo que se traduce en mayor satisfacción y mejores resultados para tu negocio.

d) Límite de tráfico. - Cuando un visitante accede a tu sitio web, el servidor intercambia datos con su navegador para mostrar el contenido. Este intercambio de datos, conocido como tráfico, tiene un tamaño que los proveedores suelen limitar mensualmente.

¿Qué implica el límite de tráfico?

El límite de tráfico mensual representa la cantidad total de datos transferidos entre el servidor y los navegadores de tus visitantes durante un mes. Una vez alcanzado este límite, el servidor deja de responder a nuevas solicitudes, lo que deja tu sitio web inaccesible.

Impacto en tu negocio:

Un límite de tráfico insuficiente puede interrumpir la experiencia de tus clientes y afectar negativamente a tu negocio.

Recomendaciones clave:

  • Presta atención al tráfico: Al contratar un servidor Cloud, verifica cuidadosamente el límite de tráfico mensual.
  • Prioriza el tráfico ilimitado: Si tu sitio web recibe mucho tráfico, considera elegir un proveedor que ofrezca tráfico ilimitado.

Al elegir un proveedor con un límite de tráfico adecuado, o idealmente, tráfico ilimitado, garantizas que tu sitio web esté siempre disponible para tus clientes, lo que se traduce en una mejor experiencia de usuario y mayores oportunidades de negocio.

En un servidor Cloud SWPanel puedes ajustar los recursos asignados desde el Dashboard de administración del servidor, tal como se describe en el siguiente 📃 Manual: Aumentar y reducir recursos de mi Cloud

1.3 Parámetros de configuración del servidor web - (Apache / Nginx/ PHP)

Los servidores Cloud SWPanel utilizan, de forma dual, los servidores Web Apache y Nginx trabajando de forma conjunta. Se configura Apache para que se ejecute detrás de Nginx , con Nginx actuando como proxy inverso. Esta configuración permite que Nginx maneje eficientemente las solicitudes de contenido estático, mientras que Apache se encarga de gestionar las solicitudes dinámicas, proporcionando una configuración equilibrada y eficiente del servidor.

a) Configuración del servidor web Apache - La optimización del servidor Web Apache para nuestra tienda con Prestashop se puede realizar a través del fichero .htaccess que se ubica en el directorio raíz de nuestra web. En este fichero podemos definir cual será el comportamiento del servidor web Apache para tareas tan importantes como el uso de caché del navegador, aumentar la seguridad de la web, proteger directorios, etc... así como optimizar el tratamiento y entrega de los datos por el navegador, mejorando notablemente el rendimiento del servidor y el posicionamiento SEO de nuestro sitio web.

  • Uso de GZIP (Se necesita tener instalado el módulo Gzip en el servidor Apache) El siguiente código posibilita la compresión de la información que es entregada por el servidor Web, de modo que la disminución en el tamaño de los datos disminuye el ancho de banda necesario para mostrar el contenido de la tienda online, aumentando la rapidez con la que se carga la web.
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_item_include file .html$
mod_gzip_item_include file .php$
mod_gzip_item_include file .css$
mod_gzip_item_include file .js$
mod_gzip_item_include mime ^application/javascript$
mod_gzip_item_include mime ^application/x-javascript$
mod_gzip_item_include mime ^text/.*
mod_gzip_item_include handler ^application/x-httpd-php
mod_gzip_item_exclude mime ^image/.*
</IfModule>
  • Activar el recurso Keep Alive. Habilitar Keep-Alive (Conexión Persistente) puede ayudar a optimizar el rendimiento del sitio web y ofrecer una mejor experiencia al usuario. Permite al navegador del visitante, reutilizar una única conexión TCP para cargar el contenido de la página, reduciendo de este modo la cantidad de solicitudes HTTP necesarias para mostrar cada elemento de la página web.
<ifModule mod_headers.c>
Header set Connection keep-alive
</ifModule>
  • Definir un valor de duración de la Caché (El dato “max-age” se expresa en segundos). La caché permite guardar en el navegador del visitante, copias de los datos necesarios para mostrar el contenido de la web, de modo que la primera vez que el navegador accede a la web, guarda localmente una copia de los datos entregados por el servidor, que serán reutilizados en posteriores peticiones a la misma web y por lo tanto que ya no serán solicitados de nuevo al servidor, reduciendo el ancho de banda necesario para mostrar el contenido de la web, reduciendo el consumo de recursos del servidor y mejorando la velocidad de carga de nuestra tienda online.
<FilesMatch "\.(php|html|htm|txt|html5|jpg|png|js|css)$">
Header set Cache-Control "max-age=604800"
</FilesMatch>
# Deshabilitar parámetros siguientes
<FilesMatch "\.(pl|cgi|spl|html)$">
Header unset Cache-Control
Header unset Expires
Header unset Last-Modified
FileETag None
Header unset ETag
Header unset Pragma
</FilesMatch>

b) Configuración del servidor web Nginx

La configuración de los parámetros del servidor Nginx para nuestra tienda online la realizaremos desde el Dashborad de nuestro servicio de Hosting con SWPanel.

  • Definir un valor de duración de la Caché . Indica el periodo de tiempo durante el cual se guardarán los datos cacheados en el navegador. El dato “Expires” se expresa en días y podemos indicar el valor por defecto que es de 7 días. (7d)
7d
  • limit_req_zone. Permite definir la cantidad de solicitudes HTTP/HTTPS que un usuario puede realizar en un periodo de tiempo determinado. Suele usarse con fines de seguridad para limitar la velocidad de respuesta del servidor Nginx y protegerlo contra posibles ataques de fuerza bruta o DDoS, si bien aumentar este valor puede mejorar la velocidad de respuesta del servidor Nginx y el rendimiento global de nuestra tienda online. Definiremos este parámetro con un valor de 300 por segundo.
$binary_remote_addr zone=swmanuales.com_rate:1m rate=300r/s
  • proxy_cache_path. Permite indicar el directorio local del servidor en el que se almacenarán los datos de caché, además de otros parámetros como el tamaño máximo del disco del servidor que se utilizará para guardar los datos cacheados por Nginx. Cuando el tamaño de la caché alcanza el límite, un proceso llamado administrador de caché, elimina los archivos que se usaron menos recientemente para que el tamaño de la caché vuelva a estar por debajo del límite. Definiremos el valor de este parámetro en 67108864 (Expresado en bytes).
/var/www/domain.com/cache levels=1:2 keys_zone=swmanuales.com_proxy:5m max_size=67108864

En un servidor administrado con SWPanel puedes ajustar los valores asignados a los parámetros de Nginx desde el Dashboard de administración de tu hosting, tal como se describe en el siguiente 📃 Manual: Cómo ajustar los parámetros básicos de mi hosting en un Cloud.

c) Parámetros de PHP. La configuración de los parámetros de PHP es uno de los puntos más importantes a la hora de garantizar un correcto funcionamiento del servidor web así como evitar su sobrecarga. En los servicios de alojamiento web de servidores compartidos, estos posibles valores de configuración de PHP, suelen estar configurados por defecto a niveles bajos y no pueden ser aumentados libremente para adaptarlos a las necesidades de nuestra web. Este es uno de los motivos por los que recomendamos alojar tu tienda online en un Servidor Cloud, ya que este tipo de alojamiento permite configurar libremente los valores de los parámetros de PHP sin ningún tipo de restricción. Los parámetros de PHP pueden ser configurados a través del panel de control del hosting SWPanel

Los valores de los parámetros de PHP más importantes a configurar son:

  • max_execution_time: Establece el tiempo máximo en segundos que un script puede ejecutarse antes de que finalice. Lo definimos con un valor de 300 segundos.
max_execution_time = 300
  • max_input_time: Establece el tiempo máximo en segundos que un script puede analizar datos de entrada como POST y GET. Esto generalmente se incrementa para permitir cargas de archivos grandes. Lo definimos a -1 lo que significa que aplicamos el mismo valor límite definido para el parámetro max_execution_time.
max_input_time = -1
  • max_input_vars: Establece el límite máximo de variables GET/POST/COOKIE que pueden ser aceptadas durante las solicitudes al servidor. En el caso de las tiendas online multilenguaje, un valor elevado de este parámetro permite mostrar correctamente las traducciones del sitio a los diferentes idiomas. Estableceremos el valor en 2000.
max_input_vars = 20000
  • memory_limit: Establece el límite máximo de memoria en MBytes que puede asignar un script. Los sitios web que realizan procesos largos o pesados necesitarán un valor alto de límite de memoria. Dependiendo del valor que se disponga de memoria RAM en el servidor, se podrá aumentar el valor en proporción. Para un servidor con 4 GB de RAM estableceremos un valor de 512M
memory_limit = 512M
  • post_max_size: Establece el tamaño máximo permitido para solicitudes POST. Estableceremos un valor de 32M
post_max_size = 32M
  • upload_max_size: Establece el tamaño máximo permitido para la subida de archivos al servidor. Por ejemplo, desde el formulario de contacto del sitio web. El valor establecido será de 32M
upload_max_size = 32M
  • allow_url_fopen: Permite a las funciones de archivo PHP recuperar datos de ubicaciones remotas mediante FTP o HTTP. Recomendamos tener activada esa opción, ya que existen módulos y addons que necesitan conectarse con URL externas para realizar sus procesos. Estableceremos en valor en 'on'
allow_url_fopen = on
  • pm.max_children Define el límite de solicitudes PHP que se ejecutan simultáneamente para un servicio de hosting en particular. Establecemos el valor en 20.
pm.max_children = 20

En un servidor administrado con SWPanel puedes ajustar los valores asignados a los parámetros de PHP desde el Dashboard de administración de tu hosting, tal como se describe en el siguiente 📃 Manual: Cómo ajustar los parámetros básicos de mi hosting en un Cloud.

2. Base de datos

La base de datos de nuestro Prestashop se encarga de guardar la información de nuestra tienda, organizada mediante el uso de tablas, índices y registros. También se encarga de gestionar las consultas y el acceso a la información almacenada en las tablas, además de procesar y administrar su contenido. Una buena configuración y mantenimiento eficiente de la base de datos es imprescindible para garantizar un rendimiento óptimo de nuestra tienda online con Prestashop.

2.1 Configuración del servidor de Base de Datos

Cualquier tienda online realiza constantemente múltiples conexiones simultáneas a la base de datos para recuperar datos de los productos, precios, imágenes, sesiones de usuario, etc. Mientras se ejecuta una consulta efectuada a la BBDD, por ejemplo sobre un producto, un listado de sus características, una imagen o video,... la web se mantiene inactiva a la espera de los datos resultantes de la consulta y una vez el motor de base de datos resuelve esta consulta la web muestra la información al usuario, por lo que es un factor crítico que la estructura y configuración de la base de datos sea optimizada para reducir al máximo el tiempo de respuesta del motor de base de datos, mejorando de este modo la velocidad de carga de la web y la experiencia de usuario.

En un servidor Cloud SWPanel los parámetros de configuración del motor de BBDD MariaDB pueden ser modificados desde su Dashboard de administración, en el que encontraremos la herramienta para modificar los ajustes básicos del servidor.

a) Caché. Optimizar el rendimiento de la base de datos (BBDD) es tan crucial como optimizar el contenido estático de tu sitio web. El uso de caché en la BBDD permite almacenar los resultados de consultas frecuentes, evitando que el servidor tenga que ejecutarlas repetidamente.

Beneficios clave de la caché de BBDD:

  • Reducción de la carga del servidor: Al no tener que repetir consultas, se libera al servidor de trabajo innecesario.
  • Aumento de la velocidad de respuesta: Las páginas de tu tienda Prestashop se cargan más rápido, mejorando la experiencia del usuario.
  • Mejora del rendimiento general: Una BBDD optimizada contribuye a un funcionamiento más fluido de tu sitio web.

Consideraciones importantes:

  • Aumentar el tamaño de la caché de la BBDD implica un mayor consumo de memoria RAM.
  • Es fundamental monitorizar el consumo de recursos y ajustar la RAM del servidor en consecuencia.
  • Cuanta más RAM asignes al servidor, mayores serán los valores de caché que podrás configurar.

Recomendaciones para Prestashop:

  • Comienza con una configuración de caché moderada y ajústala según el tráfico y el rendimiento.
  • Supervisa el consumo de RAM del servidor y asegúrate de tener suficiente capacidad para manejar la caché.
  • A medida que tu tienda online crezca, considera aumentar el espacio de ram del servidor para garantizar un rendimiento óptimo.

Al implementar una estrategia de caché eficiente para tu BBDD, puedes lograr un incremento notable en el rendimiento de tu tienda online, lo que se traduce en una mejor experiencia para tus clientes y mayores oportunidades de venta.

Los valores de los parámetros del motor de BBDD MariaDB recomendados para un servidor con 4 GB de RAM son los siguientes:

  • query_cache_type: habilita la caché.
query_cache_type = ON
  • query_cache_limit: indica el tamaño máximo de resultados por consulta que se puede almacenar en caché, es decir, para cada consulta cuánto tamaño del total de la caché le permitimos usar como máximo.
query_cache_limit = 128K
  • query_cache_size: controla la cantidad total de memoria que asignamos a la caché de las consultas, si lo establecemos en 0 estaremos deshabilitando la caché.
query_cache_size = 32M
  • table_open_cache: indica el número de tablas que se pueden tener abiertas en caché.
table_open_cache = 1000
  • thread_cache_size: indica cuántas conexiones nuevas pueden usar consultas de caché en lugar de ejecutar la consulta en disco.
thread_cache_size = 80
  • host_cache_size: número de host que almacenaremos en caché.
host_cache_size=10000

b) Buffering. El almacenamiento en búfer (Espacio de memoria en el que se almacenan datos de forma temporal) forma parte también del proceso de gestión de la caché de nuestra BBDD. Los valores de buffering sirven para ajustar los parámetros que trabajan con el área de memoria que contiene los datos almacenados en caché y que hemos definido anteriormente.

  • read_buffer_size: Establece el tamaño del búfer para la optimización de las lecturas de datos almacenados en las tablas.
read_buffer_size = 2M
  • read_rnd_buffer_size: Establece el tamaño del búfer para leer tablas en modo Full Table Scan y la lectura de las filas ordenadas con el comando SORT.
read_rnd_buffer_size = 1M
  • join_buffer_size: Es el tamaño máximo del búfer usado para las consultas de unión (joins) que requieren el escaneo completo de tablas que no utilicen índices.
join_buffer_size = 2M
  • sort_buffer_size = 2M: Es el tamaño máximo del búfer usado para ordenar los resultados del comando SORT directamente en la memoria caché (RAM del servidor) en lugar de crear archivos temporales en el disco duro con el mismo resultado de la ordenación de los datos.
sort_buffer_size = 2M
  • innodb_buffer_pool_size: Es el tamaño máximo del búfer utilizado por el motor de BBDD para almacenar los índices y datos de la base de datos. Para un servidor en el que se ejecuten simultáneamente el servidor Web y el servidor de BBDD, se recomienda asignar a esta variable de configuración entre el 50% - 60% de la memoria RAM total disponible en el sistema. Este es el parámetro de configuración que ofrece una mayor mejora en el rendimiento global de la Base de datos.
innodb_buffer_pool_size = 2G

c) Parámetros adicionales. Para incrementar el rendimiento de la BBDD podemos modificar otros parámetros como:

  • performance_schema: En BBDD en producción deshabilitaremos esta función ya que se recomienda su uso únicamente en entornos de pre-producción y para la monitorización de los eventos que ocurren en el motor de BBDD.
performance_schema = OFF
  • max_heap_table_size: Es el tamaño máximo de una tabla que puede ser creada por el usuario de BBDD y almacenada en la memoria.
max_heap_table_size = 32M
  • tmp_table_size: Especifica el tamaño máximo de una tabla temporal creada en la memoria durante la ejecución de una consulta compleja. Cuando se alcanza este tamaño máximo especificado, el motor de BBDD convierte automáticamente la tabla temporal interna en memoria, en una tabla temporal interna en disco.
tmp_table_size = 32M

2.2 Limpiar, optimizar y reparar tablas de la Base de Datos

Podemos realizar este tipo de tareas sobre nuestra base de datos utilizando herramientas para la administración de BBDD del tipo phpMyAdmin, HeidiSQL, MySQLWorkBench, etc,.. Para realizar este tipo de operaciones sobre la BBDD de nuestra tienda, deberemos ejecutar diferentes consultas de código SQL.

a) Limpiar tablas dinámicas: Las tablas dinámicas son tablas donde se almacenan datos para uso estadístico, de métricas, etc… cuyo contenido no es esencial para el funcionamiento de la tienda online (visitas, conexiones, logs…). Estas tablas se suelen llenar de registros diariamente, por lo que llegan a alcanzar un tamaño considerablemente grande si no se limpian con frecuencia. Vamos a detallar aquellas tablas dinámicas sobre las que se debe hacer limpieza de forma periódica y no dejar que estas aumenten mucho su tamaño.

Las tablas dinámicas de Prestashop son:

  • ps_connections
  • ps_connections_source
  • ps_connections_page
  • ps_guest
  • ps_log
  • ps_modules_perfs
  • ps_pagenotfound
  • ps_referrer_cache
  • ps_page_viewed
  • ps_smarty_cache
  • ps_smarty_last_flush
  • ps_smarty_lazy_cache
  • ps_statssearch

Para limpiar estas tablas podemos utilizar la siguiente consulta SQL:

TRUNCATE TABLE [nombre de la tabla];

Por ejemplo si deseamos limpiar la tabla ps_connections utilizaremos la consulta siguiente:

TRUNCATE TABLE ps_connections;

Esta consulta lo que hace es eliminar completamente todos los registros de la tabla, dejándola totalmente vacía.

b) Optimizar y reparar tablas: Muchas aplicaciones para la gestión de BBDD como HeidiSQL incluyen herramientas integradas para la optimización y reparación de las tablas de la BBDD, si bien se pueden ejecutar también manualmente algunas acciones a partir de consultas SQL sencillas:

Para optimizar las tablas, reorganizando la estructura de almacenamiento de la tabla podemos utilizar la siguiente consulta SQL:

OPTIMIZE TABLE [nombre de la tabla];

Para reparar las tablas (Solo en tablas con el motor MyISAM), podemos utilizar la siguiente consulta SQL:

REPAIR TABLE [nombre de la tabla];

Estas consultas solamente cubren una pequeña parte dentro del proceso de optimización y reparación de las tablas. Para poder solucionar errores de integridad referencial, desfragmentar datos fragmentados, eliminar registros con valores inválidos, etc… es necesario hacerlo a través de software específico o módulos específicos para Presatshop generalmente de pago, aunque existen algunos módulos gratuitos.

2.3 Módulos de Prestashop para la optimización y mantenimiento de la BBDD

Indicamos algunos módulos de Prestashop específicos para la optimización y el mantenimiento de la BBDD:

  • Prestashop Database Optimization (Gratuito): Permite limpiar los registros guardados en la BBDD correspondientes a carritos de compra no deseados, información de conexión (Estadísticas relacionadas con los visitantes), información de conexión relacionada con las páginas vistas y los tipos de páginas, información de conexión relacionada con el origen de las visitas, información sobre los visitantes/invitados de la tienda.

  • Prestashop Delete Connections (Gratuito): Elimina y optimiza los registros en las tablas de la base de datos correspondientes a las tablas, connections_source, connection_page, cart, etc...

  • Ultimate Database Optimizer: (De pago) Monitoriza, optimiza, repara, desfragmenta, limpia las tablas dinámicas y soluciona los errores de la base de datos. Funciones avanzadas para un mantenimiento integral y periódico de la BBDD.

3. Aplicación Prestashop

Este apartado combina herramientas y consejos que te pueden ayudar a mejorar el rendimiento de tu tienda creada con Prestashop, de modo que el servidor será capaz de atender más eficientemente las consultas y peticiones de un mayor número de usuarios, y por lo tanto podrías obtener más ventas.

3.1 Configuración (Smarty, Modo Depuración, Características opcionales, CCC, Caché)

Estas opciones de configuración de la propia aplicación Prestashop están disponibles en la sección "Parámetros Avanzados\Rendimiento" del panel de administración (Back-office).

Smarty

Smarty es el nombre del motor de plantillas utilizado por los temas de PrestaShop y dispone de las siguientes opciones:

  1. Compilación de plantillas Para mejorar el rendimiento front-end, PrestaShop almacena en caché las páginas HTML, pudiéndose definir 3 modos de actuación:
  • Nunca recompilar los archivos de las plantillas. El comportamiento normal: Las páginas HTML son compiladas y almacenadas en la memoria caché del navegador y se muestran tal y como son, incluso si el tema ha cambiado desde entonces. Se recomienda esta opción si la tienda está en producción y no se van a realizar cambios visuales a nivel de archivos de la plantilla. Es la opción habilitada por defecto y que mayor rendimiento proporciona a la tienda, mejorando la velocidad de carga del sitio.
  • Recompilar las plantillas cuando los archivos sean modificados. PrestaShop es capaz de saber si un tema ha sido modificado, de modo que la aplicación solamente vuelve a recompilar los archivos de las plantillas si detecta que se ha modificado su contenido. Recomendamos esta opción si de vez en cuando se realizan modificaciones en los archivos de las plantillas.
  • Forzar compilación. Sólo activa esta opción si estás editando un tema, y quieres ver los cambios realizados cada vez que recargues la página. El sistema Smarty compilará los archivos de las plantillas cada vez que se muestra el contenido al usuario web. Este modo reduce notablemente el rendimiento de la tienda. Esta opción solamente es recomendable tenerla activada mientras se están realizando trabajos de mantenimiento, desarrollo o modificaciones importantes en el sitio web.
  1. Caché: Esta opción hace posible que puedas desactivar la caché de todos los archivos, y no únicamente los que pertenecen a los archivos de la plantilla. Desactiva esta opción tan solo para la depuración de módulos y/o plantillas. En cualquier otro caso, debes dejarla activa. La opción "Borrar la caché Smarty" hace posible borrar la memoria caché con un solo clic de ratón, en lugar de tener que ir a borrar los archivos desde el servidor FTP. Controla el uso de archivos de caché para el contenido que se muestra en el Fronted y las consultas a la base de datos. Es muy importante que esta opción esté activada, de lo contrario se experimentará una disminución en el rendimiento del sitio web. Solamente se recomienda su desactivación para tareas de depuración de errores.

  2. Sincronización Multiservidor. Esta función permite la sincronización de la caché entre múltiples servidores web interconectados, optimizando el rendimiento en arquitecturas de alojamiento web distribuidas. Al habilitarla, se asegura la coherencia de los datos almacenados en caché en todos los servidores, evitando discrepancias y mejorando la eficiencia general del sistema..

  3. Borrar la caché. - Esta es la opción recomendada para la mayoría de las tiendas online. Al borrar la caché después de cada modificación (productos, diseño, configuraciones), se asegura que los visitantes siempre vean la versión más actualizada del sitio. Esta práctica garantiza la coherencia entre el contenido mostrado y la información almacenada en la base de datos, previniendo errores visuales y funcionales.

Modo depuración

Desde el modo de depuración, puedes optar por reducir el impacto que tienen ciertas funcionalidades en PrestaShop, y así poder evaluar con precisión de donde proviene un error. Esta sección solamente se debe usar para control y depuración de errores, ya que el modo debug ralentiza la carga de los elementos de la tienda y muestra los mensajes de error existentes en el Frontend. Por esta razón es muy importante tener todas sus opciones desactivadas mientras que la tienda está en producción.

Si tienes que activar alguna de estas opciones para depurar errores, previamente la tienda debe estar en modo mantenimiento, de lo contrario, los usuarios de la web podrían experimentar problemas y errores durante la navegación en el sitio web.

Opciones del Modo Depuración:

  • Desactivar los métodos de sobrecarga (overrides). Muchas de las características de PrestaShop pueden ser sobrecargadas. Si habilitas esta configuración, todas las sobrecargas del código serán desactivadas, y podrás determinar si el problema proviene del propio código de PrestaShop, o de un módulo de terceros.

  • Modo depuración. Al activar esta opción, los mensajes de error técnico serán visibles. Es útil cuando una persona está ayudando a otra que no tiene acceso a tu tienda, pero que necesita saber lo que está pasando técnicamente.

Módulos

Desactivar los módulos no nativos. Los módulos nativos de PrestaShop son testeados con exhaustividad por lo que no deberían de presentar ningún tipo de problema. Si habilitas esta opción, podrás determinar si el problema proviene del propio código de PrestaShop (núcleo o módulo), o de un módulo de terceros.

Características opcionales

Algunas características de PrestaShop pueden ser desactivadas si no las utilizas, ya que pueden ralentizar tu tienda.

Si tu catálogo tiene actualmente productos que hacen uso de estas características, no podrás desactivarlas. Tendrás que eliminar esos productos para poder desactivar estas opciones.

Puedes desactivar las siguientes características de catálogo:

  • Combinaciones. Las combinaciones de productos te permiten ofrecer una amplia gama de variantes de un mismo artículo, simplificando la gestión de tu catálogo y mejorando la experiencia de compra de tus clientes. Con esta función, puedes presentar un único producto con múltiples opciones, como diferentes tamaños, colores, capacidades, materiales, estilos, etc., permitiendo a tus clientes personalizar su compra según sus preferencias..

  • Características. Las características del producto permiten proporcionar información específica y detallada sobre cada artículo: peso, material, país de origen, etc.

  • Grupos de clientes. Los grupos de clientes te permiten agrupar clientes dentro de un mismo grupo con el fin de darles ciertos privilegios y restricciones: descuentos, restricciones de módulos, etc.

(CCC) Combinación, Compresión y Caché.

CCC es un conjunto de herramientas destinadas a minimizar la carga del servidor y el tiempo de carga del tema de la tienda.

Esto hace lo que su nombre indica: combina archivos textuales del mismo tipo en un archivo más grande, lo que reduce el número de archivos para descargar; comprime el archivo utilizando el algoritmo Zip, lo que hace que se descargue más rápidamente; finalmente, se almacena en caché el archivo comprimido, por lo que el servidor no tiene que hacer este proceso cada vez que se carga una página, lo que alivia la carga sobre el procesador del servidor.

Opciones (CCC) Combinación, Compresión y Caché:

  • "Smart cache" para las hojas de estilo (CSS). Los archivos CSS son archivos de texto, que pueden ser combinados y comprimidos de forma segura. Esta opción unifica todas las hojas de estilo con código CSS procedentes de módulos, plantilla y códigos personalizados y los comprime en un solo archivo para reducir su peso y aumentar la velocidad de lectura de su contenido.

  • "Smart cache" para el código de JavaScript. Los archivos JavaScript son archivos de texto, pero su combinación a veces puede resultar problemática. Asegúrate de probar todo antes de dejar activada esta opción. Esta opción unifica todos los códigos Javascript procedentes de módulos, plantilla y códigos personalizados y los comprime en un único archivo para reducir su peso y aumentar la velocidad de lectura de su contenido.

  • Optimización de Apache. Este ajuste de configuración, modificará el archivo de configuración del servidor web con el fin de hacerlo más eficiente para CCC. Prestashop inserta código avanzado en el archivo .htaccess ubicado en el directorio principal de la tienda, para hacer uso de la caché del navegador y servidor y de la compresión del contenido del sitio web a través de Gzip y Deflate.

Se recomienda que todas estas opciones estén activadas y solamente se desactiven para depuración de errores o durante las fases de desarrollo de la tienda online.

Servidores de medios (Utilizar solamente cuando CCC está activado)

Esta sección permite redirigir parte del tráfico de tu tienda (imágenes y archivos de vídeo, por ejemplo) a otros servidores bajo tu control, a través de otros dominios o subdominios – generalmente, los archivos están alojados en un CDN (Content Delivery Network).

Esta es una de las técnicas que más mejora el rendimiento del sitio ya que distribuye la carga de algunos elementos de la web en distintos servidores CDN. Esto se traduce en ubicar elementos como las imágenes, plantilla y los módulos en otros servidores. De esta manera, cuando un usuario visita la tienda, el navegador solicita a cada uno de estos servidores la información que tienen alojada. Esto provoca que la carga no sea asumida por un solo servidor, sino que cada uno asume la carga de sus elementos.

Configurando esta opción, el incremento de rendimiento y el aumento de la velocidad de carga de la web es extraordinaria.

En los servidores Cloud con SWPanel puedes activar automáticamente el servicio de CDN sin la necesidad de configurar esta sección de Prestashop y únicamente siguiendo los pasos descritos en el 📃 Manual: Como activar la CDN de Cloudflare a través de SWPanel para tu servicio de Hosting además puedes también aplicar diversos parámetros de configuración descritos en 📃 Manual: Cómo ajustar los parámetros de la CDN y caché de Cloudflare

Caché

La caché del servidor almacena versiones estáticas de tus páginas web dinámicas, permitiendo servirlas rápidamente a tus visitantes. Esto reduce significativamente la carga del servidor y los tiempos de compilación, mejorando el rendimiento general de tu tienda.

Diferencia con la Caché de Prestashop:

A diferencia de la caché de Smarty (propia de Prestashop), la caché del servidor es gestionada a nivel de hosting. Por lo tanto, su configuración y gestión requieren consideraciones adicionales:

Requisitos Previos:

  • Extensión de Caché Instalada: Antes de activar cualquier sistema de caché del servidor, asegúrate de que la extensión correspondiente (por ejemplo, Varnish, Redis, Memcached) esté instalada en tu servidor.

Consideraciones sobre el Contenido Dinámico:

  • Actualizaciones Frecuentes: Si tu tienda online experimenta cambios constantes (nuevos productos, imágenes, actualizaciones de diseño), desactiva la caché del servidor y realiza limpiezas manuales. De lo contrario, los cambios podrían no reflejarse correctamente para tus visitantes.
  • Limpieza de Caché: Recuerda que la limpieza de la caché del servidor es independiente de la limpieza de la caché de Prestashop.

Opciones de Configuración:

Esta sección te permite activar la caché del servidor y seleccionar el método de almacenamiento en caché compatible con tu proveedor de hosting.

Usuarios de SWPanel:

Recomendaciones clave:

  • Evalúa la frecuencia de las actualizaciones: Si realizas cambios constantes, puedes desactivar la caché del servidor.
  • Asegúrate de tener instalada la extensión de caché: Es un paso fundamental antes de activar la caché del servidor.
  • Limpieza de caché: Si realizas cambios manuales, realiza una limpieza de la caché.

En resumen, la caché del servidor es una herramienta poderosa para mejorar el rendimiento de tu tienda online, pero su configuración y gestión requieren atención a los detalles.

3.2 Módulos de Prestashop

Es habitual ampliar, añadir o personalizar la funcionalidades básicas de Prestashop mediante la instalación de módulos/addons. La instalación de estos módulos supone añadir más elementos a la estructura de la tienda e incrementar también la carga de trabajo del servidor, en mayor o menor medida según su arquitectura de código o sus funcionalidades. Para evitar que el uso de estos módulos provoquen la disminución de rendimiento del servidor es imprescindible aprovisionarlo con los recursos de hardware necesarios para asumir la carga extra.

Además recomendamos las siguientes prácticas:

  • Instalar solamente módulos oficiales desde la plataforma Prestashop Addons (Antes de ser publicado, cada módulo pasa por un proceso de verificación y control de calidad para cumplir con los estándares de la plataforma oficial).
  • Mantener siempre el módulo actualizado a la última versión.
  • Instalar únicamente los módulos imprescindibles para el funcionamiento de la tienda
  • Desinstalar o desactivar el resto de módulos que no se estén usando.
  • Hacer uso de módulos que mejoran el rendimiento del sitio web, uso de caché, optimizan la Base de datos, etc

3.3 Actualización de Prestashop

Deberías actualizar tu sitio a la última versión de PrestaShop (8.x) para disponer de las mejoras de rendimiento y correcciones de seguridad. Mantener la instalación de PrestaShop actualizada garantiza los beneficios aportados por las últimas características y optimizaciones proporcionadas por la plataforma.

Para realizar la actualización mayor desde una versión 1.6, 1.7 a la última versión disponible 8.x (1.8) puedes utilizar el "módulo oficial" 1-Click Upgrade que además generará un backup previo de tu tienda online como parte del proceso de actualización, de modo que podrás restaurarla al estado original si ocurre algún un error inesperado.

4 Imágenes web

Las imágenes son unos de los elementos principales de una página web o tienda online. En el caso de las tiendas online, cada producto debe contener una o varias imágenes. Estos elementos, como ocurre con el resto, tienen un tamaño determinado. Cuanto más tamaño y dimensión tenga una imagen, mayor carga de trabajo genera al servidor para poder procesar estos elementos, por lo tanto, mayor será el tiempo de carga.

Es muy importante optimizar las imágenes que se van a usar en el sitio web. ya que de este modo se reducirán los tiempos de carga y también afectará positivamente al SEO.

Para reducir el peso de las imágenes debemos utilizar formatos o extensiones de archivo que compriman sus datos pero manteniendo un alto nivel de calidad de la imagen. Los formatos mas extendidos son los siguientes:

  • JPG: Formato de imágenes más reconocido y usado para guardar fotos. Debido a su compresión, se trata de un formato que pierde calidad cada vez que reduces su tamaño.
  • PNG: Con él puedes añadir transparencias y, a diferencia del JPG, es un formato de compresión sin pérdidas, ideal para usarlo con todos los elementos que componen nuestro sitio web.
  • WebP: Es un formato de imagen moderno que gracias a un sofisticado algoritmo de compresión, genera imágenes de menor tamaño que JPG / PNG y manteniendo una alta calidad de imagen. Además motores de búsqueda como Google mejoran el posicionamiento SEO de los sitios web que utilizan este formato para sus imágenes.

Una vez decidido el formato en el que guardaremos las imágenes para nuestra tienda online debemos prestar especial atención a su resolución. Si el espacio reservado para visualizar una imagen es de 250px deberemos crear una imagen exactamente de este tamaño, ya que de lo contrario, si la imagen es de por ejemplo 500px su visualización continuará siendo de 250px y lo único que conseguiremos será aumentar el peso del sitio web. Por este motivo aconsejamos que crees todas las imágenes al tamaño real que se mostrarán en tu web.

Para optimizar y convertir las imágenes de tu tienda online existen módulos de Prestashop, generalmente de pago, o también gratuitamente algunas aplicaciones web o software específico como por ejemplo paint.net.


2025 DeepThink Software SLU. Todos los derechos reservados. Los precios que aparecen en la web no incluyen impuestos