Magento puede ser lento si la caché no está bien configurada. En esta guía aprenderás a optimizar Magento para conseguir la máxima velocidad.

Por qué la caché es esencial

Magento es una plataforma compleja que ejecuta muchas consultas a la base de datos y muchos cálculos. Sin caché, cada página tiene que generarse de nuevo, lo que provoca:

  • Tiempos de carga lentos (5+ segundos)
  • Carga elevada del servidor
  • Mala experiencia de usuario
  • Menor conversión

Tipos de caché de Magento

Magento tiene varios tipos de caché que puedes gestionar:

Tipo de caché Descripción
Configuration Configuración de la aplicación
Layout Archivos de diseño
Block HTML Salida de bloques
Collections Datos de colecciones
Reflection Información de la API
Database DDL Esquema de la base de datos
EAV Atributos de entidades
Page Cache Caché de página completa
Translations Traducciones

Gestionar la caché

  1. Ve a System > Cache Management
  2. Aquí puedes:
    • Activar o desactivar tipos de caché individuales
    • Hacer flush de la caché (vaciarla)
    • Invalidar la caché

Gestionar la caché por SSH

Por la línea de comandos es más rápido. Ejecuta estos comandos en la carpeta de Magento:

# ver el estado de todos los tipos de caché
bin/magento cache:status

# activar todos los tipos de caché
bin/magento cache:enable

# limpiar solo tipos de caché concretos
bin/magento cache:clean config layout

# vaciar toda la caché
bin/magento cache:flush

Full Page Cache (FPC)

Full Page Cache almacena páginas completas y es la mejora de rendimiento más importante.

Activar FPC

  1. Ve a Stores > Configuration > Advanced > System
  2. En Full Page Cache:
    • Caching Application: Built-in Cache
    • TTL for public content: 86400
  3. Haz clic en Save Config

FPC para páginas concretas

No todas las páginas se pueden almacenar en caché:

  • Sí se almacenan en caché: página de inicio, páginas de categoría, páginas de producto
  • No se almacenan en caché: carrito, checkout, páginas de cuenta

Varnish Cache

Para obtener el máximo rendimiento se recomienda Varnish:

Ventajas de Varnish

  • Páginas hasta 300x más rápidas
  • Menor carga del servidor
  • Mejor escalabilidad

Configurar Varnish

  1. Ve a Stores > Configuration > Advanced > System
  2. En Full Page Cache:
    • Caching Application: Varnish Cache
  3. Exporta la configuración VCL de Varnish
  4. Pide al equipo de soporte que active Varnish

LiteSpeed Cache

En los servidores de Theory7 está disponible LiteSpeed, que ofrece una caché excelente.

Instalar el módulo de LiteSpeed

composer require litespeed/module-litemage
bin/magento module:enable Litespeed_Litemage
bin/magento setup:upgrade

Configuración

  1. Ve a Stores > Configuration > LiteMage > Configuration
  2. Enable LiteMage: Yes
  3. Configura el TTL de la caché y las exclusiones

Consulta también: Configurar Magento y LiteSpeed Cache

Redis Cache

Redis mejora de forma notable la caché del backend.

Redis como backend de caché

En app/etc/env.php, de esta forma:

'cache' => [
    'frontend' => [
        'default' => [
            'backend' => 'Magento\\Framework\\Cache\\Backend\\Redis',
            'backend_options' => [
                'server' => '127.0.0.1',
                'port' => '6379',
                'database' => '0'
            ]
        ]
    ]
]

Redis para las sesiones

'session' => [
    'save' => 'redis',
    'redis' => [
        'host' => '127.0.0.1',
        'port' => '6379',
        'database' => '2'
    ]
]

Optimizaciones de rendimiento

Agrupar JavaScript y CSS

  1. Ve a Stores > Configuration > Advanced > Developer
  2. En JavaScript Settings:
    • Merge JavaScript Files: Yes
    • Minify JavaScript Files: Yes
    • Enable JavaScript Bundling: Yes (solo en producción)
  3. En CSS Settings:
    • Merge CSS Files: Yes
    • Minify CSS Files: Yes

Optimizar las imágenes

  1. Usa el formato WebP siempre que sea posible
  2. Configura correctamente el redimensionamiento de imágenes
  3. Usa la carga diferida (lazy loading) para las imágenes
  4. Implementa una CDN para los archivos multimedia

Flat Catalog

Para catálogos con 1000+ productos:

  1. Ve a Stores > Configuration > Catalog > Catalog
  2. En Storefront:
    • Use Flat Catalog Category: Yes
    • Use Flat Catalog Product: Yes
  3. Vuelve a indexar después de activarlo

Modo de producción

Magento debe funcionar en modo de producción:

bin/magento deploy:mode:set production
bin/magento setup:static-content:deploy nl_NL
bin/magento cache:clean
bin/magento cache:flush

Comprobar el modo

bin/magento deploy:mode:show

En modo de producción, los archivos estáticos se generan por adelantado y los visitantes no ven mensajes de error (solo aparecen en los registros). Después de modificar tu tema o tus extensiones, vuelve a desplegar el contenido estático:

bin/magento setup:static-content:deploy nl_NL en_US

Después de instalar o actualizar extensiones, ejecuta primero bin/magento setup:di:compile. En modo developer o default, añade -f al despliegue para forzarlo.

Indexadores

Los indexadores convierten los datos de producto, los precios y las categorías en tablas de consulta rápida. Ponlos en modo schedule para que se actualicen en segundo plano mediante cron en lugar de cada vez que guardas:

bin/magento indexer:set-mode schedule

Ver el estado y volver a indexar manualmente:

bin/magento indexer:status
bin/magento indexer:reindex

Configuración de cron

Magento necesita cron para el calentamiento de la caché y la indexación:

* * * * * /usr/bin/php /pad/naar/magento/bin/magento cron:run

Probar el rendimiento

Herramientas

  • Google PageSpeed Insights: puntuación general de rendimiento
  • GTmetrix: análisis detallado
  • WebPageTest: análisis en cascada
  • New Relic: monitorización del lado del servidor

Objetivos de referencia

  • TTFB (Time To First Byte): < 200 ms
  • First Contentful Paint: < 1,5 s
  • Largest Contentful Paint: < 2,5 s

Lista de comprobación de rendimiento

  • Modo de producción activado
  • Full Page Cache activa
  • Contenido estático desplegado
  • Indexadores en modo schedule
  • Cron de Magento ejecutándose cada minuto
  • LiteSpeed Cache configurada
  • PHP OPcache activado