Por que WooCommerce puede ser mas lento que un sitio WordPress normal
WooCommerce agrega una capa significativa de complejidad a WordPress: maneja catalogo de productos con variaciones, gestion de inventario, precios dinamicos, sessiones de carrito, procesamiento de pagos y mucho mas. Todo este procesamiento adicional implica mas consultas a la base de datos, mas codigo PHP ejecutandose en cada solicitud y mas operaciones de lectura y escritura en disco. Sin la optimizacion correcta, una tienda WooCommerce puede ser considerablemente mas lenta que un blog WordPress equivalente con el mismo trafico.
Diagnosticar la lentitud de WooCommerce
Antes de aplicar soluciones, es fundamental identificar exactamente donde esta el cuello de botella:
| Herramienta | Que diagnostica |
|---|---|
| Query Monitor | Numero de consultas SQL, tiempo por consulta, plugin responsable |
| Google PageSpeed Insights | Core Web Vitals, recursos que bloquean el renderizado |
| GTmetrix | Cascada de carga, tiempo de respuesta del servidor (TTFB) |
| New Relic o Datadog | Trazas de rendimiento de nivel de aplicacion |
Optimizaciones especificas para WooCommerce
1. Cache de paginas con exclusiones correctas
Activar LiteSpeed Cache con exclusiones especificas para las paginas dinamicas de WooCommerce. Cachear el catalogo de productos (que puede serlo para todos los usuarios) y excluir el carrito, checkout y cuenta de usuario.
2. Optimizar la tabla wp_options
WooCommerce guarda mucha informacion en la tabla wp_options. Con el tiempo, esta tabla puede crecer enormemente con opciones de sesiones, transients y configuraciones de plugins no utilizados:
-- Ver las opciones mas grandes en la tabla wp_options SELECT option_name, LENGTH(option_value) as size_bytes FROM wp_options ORDER BY size_bytes DESC LIMIT 20; -- Limpiar sessions de WooCommerce expiradas DELETE FROM wp_options WHERE option_name LIKE '_wc_session_%' AND option_name NOT IN (SELECT option_name FROM wp_options WHERE autoload = 'yes');
3. Activar el modo de carrito persistente con fragmentos optimizados
WooCommerce hace una solicitud AJAX en cada carga de pagina para verificar el estado del carrito (cart fragments). En sitios con mucho trafico, esto puede generar miles de solicitudes adicionales. Agregar en functions.php del tema para deshabilitar los fragmentos de carrito en paginas donde no es necesario:
// Desactivar cart fragments en la pagina de inicio (si no hay mini-carrito)
add_action('wp_enqueue_scripts', function() {
if (is_front_page() || is_home()) {
wp_dequeue_script('wc-cart-fragments');
}
}, 11);
