¿Búsqueda lenta WooCommerce en una gran tienda?Obtenga un aumento de velocidad de hasta 867% con esta solución gratuita

Recientemente encontré algunos problemas serios con WooCommerce Search en sitios comerciales electrónicos que procesan una gran cantidad de pedidos. La tabla postmeta debe ser interrogada al buscar un cierto meta_value, lo que causa una desaceleración importante. Por ejemplo, la consulta de la sección “Mis pedidos” tomaría 5 segundos o, posiblemente, aún más, dependiendo del entorno del servidor. Para empeorar las cosas, realizar búsquedas en la pantalla de “órdenes” para pedidos que pertenecen a un correo electrónico en particular o una determinada persona puede tomar 30 segundos o más (debido a la unión adicional en la tabla postmeta).
Ambos ejemplos anteriores son inaceptables para un sitio web de gran volumen y tuvieron que abordarse. Soluciones actuales y limitaciones asociadas Después de investigar un poco, descubrí que estos problemas se tratan actualmente de una de dos maneras:
Uso de la indexación Elasticsearch, utilizando el complemento ElasticPress o
Utilizando una tabla de índice secundario dentro de la misma base de datos del sitio.
La solución Elasticsearch suena bien en teoría, pero nuestra experiencia nos hace creer que no es bueno integrarse con WordPress. Esto se debe a la gran cantidad de diferencias entre la fuente básica de datos WP (que son las tablas MySQL) y el índice Elasticsearch.
Si bien ElasticSearch realiza muy bien las búsquedas parciales y es bastante bueno para “adivinar” lo que pretende escribir en la consulta de búsqueda, estos beneficios menores ciertamente no son excedidos por las desventajas de integrar estas dos fuentes de datos:
La latencia entre el Tribunal de Elasticsearch y su proveedor de alojamiento (tenga en cuenta que esto no será un problema si tiene elastick instalado en el mismo servidor que su entorno PHP, pero este no es un escenario común con las soluciones de alojamiento de WordPress hoy) cubiertos en cada uno. El resultado (en todas las páginas) está restringido a solo unos pocos cientos.
En este caso, debemos interrogar a la corte de elasticsearch y luego transmitir las ID de posteriores correctas a WP_Query (mientras respetamos la longitud máxima del cuestionamiento de SQL a MySQL). Esto interrumpe el flujo de trabajo para búsquedas de rango ancho y podría proporcionar un número engañoso de resultados totales al administrador de la tienda que busca la pantalla de pedido.
Ahora, en la tabla de índice secundario. La solución original nos fue presentada por Patrick Garman, un desarrollador de WordPress. Inicialmente, tenía la intención de mejorar solo la sección de “órdenes” de WooCommerce, pero pensamos que no coincide con nuestras necesidades. Sabemos que su implementación actual está destinada a ser solo un remedio temporal hasta el lanzamiento de WooCommerce 3.0 y la enorme reorganización de la base de datos que se planea para ello (lo que resolverá los problemas que discutimos en esta publicación). También sabemos que WC 3.0 no está programado para ser lanzado hasta mediados de 2017 y, dado que tenemos que hacer nuestros clientes antes, hemos renunciado a la implementación de Patrick.
¿Necesita ayuda con su sitio de comercio electrónico? ¡Contrata a Mitchell y el equipo de Saucal y pídales que trabajen de inmediato en tu proyecto! Nuestra solución propuesta La implementación inicial del índice de pedido indexa solo las ID del pedido y las ID de cliente en una tabla secundaria (que es lo que Patrick se ha propuesto reparar). Su solución es cambiar el wp_quey “mis comandos” para usar su índice. Extendí esto de algunas maneras: incluimos correos electrónicos del cliente (tanto el correo electrónico de facturación en el pedido como el correo electrónico del cliente que se deriva del cliente asignado al pedido). Cada vez que busca un correo electrónico al ver los comandos de la sección de administración, activamos el uso del índice en lugar del postmeta.
Incluimos los nombres de los clientes (facturación, envío y el nombre mostrado del cliente asignado).
Aquí nos encontramos con un problema; No queremos eliminar completamente las funciones de búsqueda existentes de WooCommerce, pero debemos tener una forma de usar el índice condicionado para una búsqueda más rápida. Esto se debe al hecho de que nuestro índice no acepta la búsqueda de la dirección, por ejemplo, y la funcionalidad de WooCommerce lo cubre.
Para lograr esto, incluimos un parámetro como la búsqueda. Cada vez que su parámetro de búsqueda es “Nombre: John D”, devolvemos todos los pedidos con nombres que coinciden con John D usando una búsqueda metacráctica. Puede buscar la ID de pedido en WooCommerce, pero sentí que podríamos hacerlo más fácilmente, por lo que con nuestra solución, solo puede ingresar el término de búsqueda “#1456” y devolverá el pedido 1456. Cómo poner la aplicación para instalar Este índice, todo lo que tiene que hacer es instalar el pelaje del complemento y luego activarlo. Aquí está la URL: https://github.com/saucal/wc-customer-order-indexsingura complicación en este momento es que necesita acceso a WP-CLI para crear el índice inicial. Estamos trabajando para activar una interfaz AJAX que le permitirá construir el índice WP-CLI. Por el momento, después de activar el complemento, debe abrir la interfaz WP-CLI e ingresar el comando “WP WC_COI RESET_INDEX” para comenzar a generar el índice para usted. La duración de este proceso variará según la cantidad de pedidos que tiene sobre Su sitio como han cambiado las cosas
Al usar este complemento, logramos mejorar en gran medida el rendimiento de las grandes tiendas de nuestros clientes. Arriba puede ver un ejemplo en el que el tiempo fue de hasta casi 40 segundos. En uno de nuestros casos, el peor rendimiento, la búsqueda por correo electrónico en WP-Admin dura más de 50 segundos.

Usando este complemento, redujimos el tiempo de búsqueda a menos de 5 segundos, ¡mejorándolo en un 867%! La conclusión de cosas que probé la solución Elasticsearch para uno de nuestros clientes y tuve demasiadas piezas móviles para nuestro gusto. Preferimos algo que permanece en el alcance de WordPress y no requiere que nuestros clientes se registren para ningún servicio externo. Para ser claros, este no es un problema de Elasticsearch como tecnología. Es demasiado diferente de la forma en que funciona WordPress, por lo que la integración de los dos ha creado algunas desventajas, que fueron para nosotros hacer descansos, dado lo que estábamos tratando de lograr. Además, tuvimos que confiar en un tercero complejo (elasticpress de 10UP). Repitimos el enfoque de Patrick y lo extendimos para satisfacer las necesidades más comunes de nuestros clientes. Como agencia de WordPress de confianza, sabemos que esta no es la solución más hermosa, porque duplica muchos datos. Solo queremos ofrecer a nuestros clientes una solución sólida hasta que se lance WooCommerce 3.0 y haga que esta solución sea inútil. ¿Habrías hecho algo diferente? No dude en enviarnos una solicitud de extracción a nuestro almacén, ¡nos gustaría ver alternativas! Muy bueno para nuestro desarrollador principal Matias porque me ayudó con este artículo.
¿Necesita ayuda con su sitio de comercio electrónico? ¡Contrata a Mitchell y el equipo de Saucal para que trabajen en tu próximo proyecto!

Copyright statement: Unless otherwise noted, this article is Collected from the Internet, please keep the source of the article when reprinting.

Check Also

gkOVSBm5B8SgiXmo

Shopify vs WooCommerce – ¿Cuál es la mejor plataforma?(Comparación)

Shopify vs WooCommerce

Leave a Reply

Your email address will not be published. Required fields are marked *