Büyük mağazalarda WooCommerce yavaş arayın?Bu ücretsiz çözümle% 867’ye kadar hızda bir artış elde edin

Son zamanlarda, e -ticaret sitesinde büyük siparişleri işleyen WooCommerce arayışı ile ilgili bir dizi ciddi sorun yaşadık. Postmeta tablosu, büyük bir yavaşlamaya neden olan belirli meta_value ararken sorulmalıdır. Örneğin, “Siparişim” bölümünü sormak, sunucu ortamına bağlı olarak 5 saniye veya daha fazla sürecektir. Daha da kötüsü, e -posta siparişleri veya belirli kişiler için “sipariş” ekranında arama yapmak 30 saniye veya daha fazla sürebilir (Postmeta tablosuna ek ortak katılım nedeniyle). Yukarıdaki iki örnek, yüksek miktarda trafiğe sahip web siteleri için kabul edilemez ve ele alınmalıdır.
Mevcut çözümler ve ilgili sınırlamalar Birkaç çalışma yaptıktan sonra, bu sorunun şu anda iki yoldan biriyle ele alındığını bulduk:
ElasticPress eklentisinin yardımıyla Elasticsearch dizinini kullanarak veya
Aynı site veritabanında ikincil dizin tablosunu kullanın.
Elasticsearch çözümü teoride iyi geliyor, ancak deneyimlerimiz WordPress ile bütünleşmenin iyi bir şey olmadığına inanmamızı sağlıyor. Bunun nedeni, temel WP veri kaynakları (yani MySQL tablosu) ve Elasticsearch indeksleri arasındaki birçok farklılıktır. Elasticsearch, kısmi bir arama çok iyi gerçekleştirir ve arama sorgularında ne yazmak istediğinizi “tahmin etmek” konusunda oldukça iyi olsa da, bu küçük fayda bu iki veri kaynağını entegre etmenin kaybı ile açıkça karşılaştırılamaz:
Elasticsearch örneğiniz ve barındırma sağlayıcınız arasındaki gecikme (PHP ortamınızla aynı sunucuya elasticPress yüklerseniz bunun bir sorun olmayacağına dikkat edin, ancak bu, şu anda yönetilen bir WordPress barındırma çözümüne sahip genel bir senaryo değildir) ve Her sonuçta (tüm sayfalarda) ele alınan sipariş sayısı sadece birkaç yüze daralmıştır.
Bu durumda, elasticsearch örneklerine sormamız ve ardından WP_Query ile eşleşen yayın kimliğine devam etmemiz gerekir (MySQL’e gönderilen SQL sorgusunun maksimum uzunluğunu takip ederken). Bu, iş akışına geniş bir aralıkta arama yapmak için zarar verir ve sipariş ekranında arama yapan mağaza yöneticisine toplam miktarda yanıltıcı sonuç sağlama potansiyeline sahiptir.
Şimdi, ikincil dizin tablosuna. Orijinal çözüm bize WordPress geliştiricileri Patrick Garman tarafından sunuldu. Başlangıçta sadece WooCommerce’deki “Siparişim” bölümünü artırmayı amaçladı, ancak bunun ihtiyaçlarımızı karşılamadığını düşündük. Uygulamasının şu anda yalnızca WooCommerce 3.0’ın piyasaya sürülmesine ve bunun için planlanan büyük bir veritabanı yeniden düzenlemesine kadar geçici bir iyileştirme olarak tasarlandığını biliyoruz (bu, bu yazıda tartıştığımız sorunları çözecek). Ayrıca WC 3.0’ın -2017 ortalarına kadar piyasaya sürülmesi planlanmadığını ve müşterilerimizi bundan önce mutlu etmemiz gerektiğinden Patrick uygulamasını uyguluyoruz.
E -ticaret web sitenizde yardıma mı ihtiyacınız var? Mitchell ve Saucal ekibini işe alın ve onlardan hemen projeniz üzerinde çalışmalarını isteyin! Sipariş endeksinin orijinal uygulanmasını önerdiğimiz çözüm yalnızca Sipariş Kimliğini ve Müşteri Kimliğini İkincil Tabloda (Patrick tarafından düzeltilecek) endeksledi. Çözüm, dizin dosyasını kullanmak için wp_query “siparişi” değiştirmektir. Bunu çeşitli şekillerde genişletiyoruz: Müşteri e -postaları (hem siparişlerde fatura e -postaları hem de siparişlere atanan müşterilerden müşteri e -postaları) ekledik. Yönetici bölümündeki sipariş ekranında bir e -posta aradığınızda, Postmeta yerine dizin kullanımını tetikleriz.
Müşterinin adını dahil ettik (belirtilen müşterinin faturalandırma, nakliye ve ekran adı).
Burada bir sorun buluyoruz; Mevcut WooCommerce arama özelliğini tam olarak silmek istemiyoruz, ancak daha hızlı arama için koşullu dizin kullanmanın birkaç yoluna sahip olmamız gerekiyor. Bunun nedeni, dizinimizin adres aramasını desteklememesidir ve örneğin WooCommerce işlevselliği bunu içerir.
Bunu başarmak için arama gibi parametreler ekledik. Arama parametreniz her “Name: John D” olduğunda, tüm siparişleri joker aramasını kullanarak John D ile eşleşen bir adla döndürürüz. Woocommerce’de bir sipariş kimliği bulabilirsiniz, ancak bunu kolaylaştırabileceğimizi düşünüyoruz, bu nedenle çözümümüzle “#1456” terimini ve 1456 siparişleri size geri dönebilirsiniz. Bu dizin yüklemek için nasıl uygulanır, tek yapmanız gereken eklenti çatalımızı yüklemek ve sonra etkinleştirmektir. Aşağıdaki URL: https://github.com/saucal/wc-customer-order-indexsu-sely komplikasyonları, bir başlangıç ​​dizinini oluşturmak için WP-Chli’ye erişmeniz gerektiğidir. WP-CHLi olmadan bir dizin oluşturmanızı sağlayan AJAX arayüzünü etkinleştirmeye çalışıyoruz. Şimdilik, eklentiyi etkinleştirdikten sonra, WP-CLI arabiriminizi açmanız ve sizin için bir dizin yapmaya başlamak için “WP WC_COI Reset_index” komutunu girmeniz gerekir. Bu işlem süresi, sitenizdeki sipariş sayısına bağlı olarak değişecektir. Her şey nasıl değişir
Bu eklentiyi kullanarak müşterilerimizin büyük mağazalarının performansını önemli ölçüde artırabiliriz. Yukarıda, zamanın neredeyse 40 saniyeye ulaştığı bir örnek görebilirsiniz. En kötü performans gösteren durumlarımızdan birinde, WP-Admin’deki e-posta araması 50 saniyeden fazla sürer.

Bu eklentiyi kullanarak, arama süresini 5 saniyeden daha az bir seviyeye düşürerek%867’ye çıkarıyoruz! Müşterilerimizden biri için Elasticsearch çözümünü denediğimiz her şeyi sarın ve isteklerimize göre hareket eden çok fazla parçaya sahip olun. WordPress kapsamında kalan ve müşterilerimizin herhangi bir harici hizmete kaydolmasını gerektirmeyen bir şeyi tercih ediyoruz. Açık olmak gerekirse, bu teknoloji olarak bir elasticsearch problemi değildir. Sadece WordPress’in çalışma biçiminden çok farklı, bu yüzden ikisini entegre etmek, bizim için başarmak istediğimiz şey göz önüne alındığında anlaşmanın kırılması olan bazı kayıplar yaratıyor. Buna ek olarak, karmaşık üçüncü taraf eklentilerine (ElasticPress 10up) güvenmeliyiz. Patrick yaklaşımını tekrarlıyoruz ve müşterilerimizin en yaygın ihtiyaçlarını karşılamak için genişletiyoruz. Güvenilir bir WordPress ajansı olarak, bunun en güzel çözüm olmadığını biliyoruz, çünkü çok fazla veriyi çoğaltıyor. WooCommerce 3.0 yayınlanana ve bu çözümü gereksiz hale getirene kadar müşterilerimize sağlam çözümler sunmak istiyoruz. Farklı bir şey mi yapacaksın? Depamıza çekmek için bir istek göndermekten çekinmeyin, alternatifi görmek istiyoruz! Ana geliştirici Matias için TOS çünkü bu makalede bana yardımcı oldu. E -ticaret web sitenizde yardıma mı ihtiyacınız var? Bir sonraki projeniz üzerinde çalışmak için Mitchell ve Saucal ekibini işe alın!

admin

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir