WooCommerce con miles de productos - el sitio es muy lento - ¿optimizar consultas de base de datos?

22 oct 2012, 20:26:19
Vistas: 23.4K
Votos: 3

Hasta ahora tengo alrededor de 8,000 productos en mi WooCommerce y la página de productos en el front-end tarda varios segundos en cargar, incluso después del almacenamiento en caché.

Mi proveedor de VPS dice que debería tener múltiples bases de datos.
¿Es ese el método correcto y si es así, cómo es posible?

Cualquier sugerencia para acelerar mis consultas a la base de datos o simplemente acelerar el front-end sería excelente.

Here are some suggested solutions I could provide: 1. Utilizar un plugin de caché avanzado como WP Rocket o W3 Total Cache 2. Implementar índices en las tablas de productos de la base de datos 3. Optimizar las imágenes y utilizar CDN 4. Ajustar la paginación de productos 5. Revisar y optimizar consultas SQL personalizadas 6. Utilizar objetos en caché transient para datos frecuentes 7. Implementar lazy loading para imágenes 8. Considerar sharding de base de datos solo si es realmente necesario ¿Te gustaría que profundice en alguna de estas soluciones específicas?
1
Comentarios

Descubrí que uno de los factores que pueden ralentizar WooCommerce es el tamaño de la tabla meta (aquí mi publicación de blog más extensa con datos de respaldo: http://www.danielauener.com/slow-woocommerce-many-products/). Si no puedes evitarlo, mis recomendaciones son un servidor más potente o ElasticSearch.

daniel.auener daniel.auener
6 mar 2017 19:44:26
Todas las respuestas a la pregunta 3
4

Esto es realmente una cuestión del servidor y no particularmente de WordPress.

Estás encontrando un cuello de botella en la velocidad del servidor MySQL en 1and1. Lamentablemente, son conocidos por ser un hosting compartido lento, y por esa razón dudo que sus VPS sean mejores.

El caching y una CDN solo te ayudarán hasta cierto punto. Necesitas más potencia en forma de un servidor MySQL mejor y más rápido, y si ya estás pagando por un VPS, cámbiate a un proveedor de VPS mejor, como Media Temple.

Una vez allí, con acceso root, podrás utilizar una herramienta como http://mysqltuner.com para registrar y analizar el rendimiento del servidor MySQL y ajustar la memoria del servidor y los parámetros de caché de consultas de la base de datos en el archivo de configuración my.cnf. También podrás ajustar Apache - en httpd.conf - para manejar cargas altas.

No tiene mucho sentido intentar optimizar las consultas de la base de datos realizadas por WooCommerce o WordPress; cualquier cambio realizado deberá volver a hacerse después de las actualizaciones.

30 oct 2012 01:18:51
Comentarios

Estoy probando WP Super Cache, pero no ayudó mucho. Confío en el servidor, pero 1and1 afirma que es el código del sitio, ¿podrías echarle un vistazo rápidamente y confirmar? http://s15430161.onlinehome-server.com/shop/product-category/dark-horse/ solo haz clic en cualquiera de las miniaturas de cómics.

Ah, y actualmente hay alrededor de 13,000 productos en la base de datos.

Stephen Stephen
30 oct 2012 19:39:12

@ el comentario anterior, he almacenado en caché algunos, así que si se carga al instante, prueba con uno diferente.

Stephen Stephen
30 oct 2012 19:58:38

Olvídate de intentar almacenar en caché. Si tienes acceso root en ese VPS, revisa tu archivo my.cnf y ejecuta mysqltuner.pl para optimizar MySQL.

markratledge markratledge
1 nov 2012 06:31:36

No es un cuello de botella de MySQL, sino un código terrible dentro de WooCommerce y WordPress que analiza cada producto en tu base de datos usando PHP solo para contar productos en cada categoría. En mi servidor, el MySQL para 100,000 productos devuelve los resultados en 0.3 segundos, pero usando PHP-FPM básico la página tarda 185 segundos en cargar (¡en un VPS de 8 núcleos!). Cuando uso HHVM en su lugar, tarda 10 segundos.

Dave Hilditch Dave Hilditch
15 ene 2015 01:23:16
0

Tengo dos soluciones que te recomendaría para resolver tu problema. Primero, utiliza elasticsearch.com para poblar todos los índices de productos. Al mismo tiempo, mejorarás dramáticamente las capacidades de búsqueda de tu sitio web (si se integra correctamente). Asegúrate de colocar la solución de elasticsearch en un servidor diferente.

Mi opinión es que tu sistema de caché no está configurado correctamente o tu servidor está sobrecargado. Una solución que podría ser la más económica (opción #2) sería utilizar los servidores de caché gratuitos de cloudflare.com. Esto normalmente solucionará tu problema de la manera más rentable si no quieres lidiar con optimizaciones del servidor.

30 oct 2012 01:02:13
0

El caché con Varnish es la mejor solución, sin embargo debes evitar almacenar en caché el fragmento del carrito en el encabezado y las páginas de carrito/checkout. Considero que WooCommerce debería configurarse con Varnish Edge Side Includes. Para excluir el checkout sigue estas instrucciones:

http://docs.woothemes.com/document/configuring-caching-plugins/#section-3

28 abr 2014 11:02:24