Nota revisada y reescrita el 18 de octubre de 2026: la versión original tenía errores y datos sin fuente.
Una tienda WooCommerce que tarda 3 segundos en servir la página de producto suele tener una o dos causas concretas, no "WordPress es lento". Estas son las que miraría, en este orden, antes de pagar por un servidor más grande.
1. Medir: Query Monitor
El plugin Query Monitor añade a la barra de administración el tiempo de generación de la página, el número de consultas a la base de datos, las más lentas, las duplicadas y qué plugin o tema las lanza. Abre una ficha de producto, el carrito y una categoría con sesión de administrador y apunta las cifras. Sin esto, cualquier cambio es a ciegas.
Si el tiempo se va en el servidor (un TTFB alto), sigue con esta lista. Si el servidor responde rápido y aun así la página va lenta, el problema está en el frontend (imágenes, scripts) y es otro artículo.
2. Pedidos en tablas propias (HPOS)
Históricamente, WooCommerce guardaba los pedidos como entradas de WordPress, en wp_posts y wp_postmeta. Con decenas de miles de pedidos, esas tablas se vuelven enormes y cualquier consulta de pedidos se encarece. High-Performance Order Storage (HPOS) los mueve a tablas propias. Viene activado por defecto en instalaciones nuevas desde WooCommerce 8.2 (octubre de 2023), pero las tiendas más antiguas pueden seguir con el sistema viejo.
Está en WooCommerce → Ajustes → Avanzado → Características. El cambio se hace por fases: primero activas la sincronización entre las dos tablas (modo de compatibilidad), dejas que termine (wp wc cot sync con WP-CLI), y después cambias la fuente principal a HPOS. Si un plugin activo es incompatible, la opción aparece bloqueada y te dice cuál es.
3. Opciones con autoload
WordPress carga en cada petición todas las filas de wp_options marcadas con autoload. Plugins desinstalados que dejaron sus datos, o transients enormes, pueden sumar varios MB que se leen siempre:
SELECT option_name, LENGTH(option_value) AS bytes
FROM wp_options
WHERE autoload IN ('yes', 'on', 'auto-on', 'auto')
ORDER BY bytes DESC
LIMIT 20;
Desde WordPress 6.6, Herramientas → Salud del sitio avisa si el total de autoload es demasiado grande. Lo que pertenezca a plugins que ya no usas se puede borrar (con copia de seguridad antes). A lo que siga en uso pero no haga falta en cada página, se le puede quitar el autoload.
4. Caché de objetos persistente
Sin caché de objetos, WordPress repite las mismas consultas en cada petición. Con Redis (o Memcached) y su drop-in object-cache.php, los resultados se guardan entre peticiones. Es de las mejoras que más se notan en las páginas que no se pueden cachear enteras: carrito, checkout y Mi cuenta. Salud del sitio también recomienda activarla.
5. Caché de página, con las exclusiones correctas
Las fichas de producto y las categorías se pueden servir desde una caché de página completa (la del hosting, Nginx FastCGI cache o un plugin). El carrito, el checkout y Mi cuenta no, y tampoco las peticiones con las cookies de sesión de WooCommerce (woocommerce_items_in_cart, wp_woocommerce_session_*). Si se cachean, los clientes ven carritos ajenos.
6. Peticiones que no ves
admin-ajax.php: en la pestaña Network busca llamadas repetidas aadmin-ajax.phpo?wc-ajax=en cada página (fragmentos del carrito, plugins de chat o de estadísticas). Cada una arranca WordPress entero.- WP-Cron: por defecto se dispara con las visitas, y una tarea pesada (sincronizar stock, enviar emails) puede tocarle a un cliente. Desactívalo con
define('DISABLE_WP_CRON', true);y ejecútalo desde el cron del sistema cada minuto conwp cron event run --due-now. - Action Scheduler: en WooCommerce → Estado → Acciones programadas, miles de acciones pendientes o fallidas indican un plugin que encola más de lo que procesa.
7. PHP y base de datos
Versión de PHP soportada (8.2 o superior) con OPcache activo, y una base de datos con memoria suficiente para tener los índices en RAM. Comprueba también qué consultas lentas señala Query Monitor: a veces es un plugin de filtros que hace búsquedas sobre wp_postmeta sin índice.