Magento 2 ile maksimum verimlilik nasıl elde edilir? Max Pronko ile röportaj
Yayınlanan: 2017-01-17Max Pronko, yeni başlayanların takip etmesi gereken Magento gurularından biridir. Magento uzmanı ve kamu konuşmacısı, Magento Sertifikalı Geliştirici ve popüler bir Magento 2 blog yazarıdır.
Magento'da 10 yıllık yazılım geliştirme ve danışmanlık deneyimi ile Max, orta ve büyük ölçekli yüksek kaliteli ürünleri başarıyla tasarlamış ve uygulamıştır.
Max'i Twitter'da takip edin.
Son zamanlarda Max, Magento Macaristan'la Tanıştı ve Magento 2 açılış konuşmasında performans optimizasyonunun Gerçek kullanım örneklerini sundu . Bu bağlamda, röportajımıza doğrudan bu sunumla ilgili birkaç soru ile başlamak istiyoruz.
Bölüm 1: Ortak Magento Uzantıları Zorlukları
Hemen hemen her Magento 2 tüccarı, bir yandan varsayılan platform işlevselliğini büyük ölçüde artıran, ancak diğer yandan performans iş akışını olumsuz yönde etkileyen 3 boyutlu taraf uzantıları kullanır.
Natalie: Genel olarak, 3d taraf uzantılarının kod kalitesini ve sunucu yüklerini nasıl etkileyebileceklerini nasıl değerlendirebilirsiniz?
Max: Magento 2 hakkında konuşma fırsatı için teşekkürler, Natalie. Blogunuzu bir yıldan fazla bir süredir takip ediyorum ve her ziyaret ettiğimde ilginç makaleler buluyorum. Bunun için teşekkür ederim.
Bildiğiniz gibi, birkaç nedenden dolayı kodu incelemeyi seviyorum:
- İlk olarak, iş gereksinimlerinin tamamen işlevsel, yüksek kaliteli özelliklere nasıl dönüştürüleceği konusunda deneyim kazanıyorum ve ilginç teknikleri gözlemliyorum. Özellikle Magento 2'ye gelince.
- İkincisi, Magento ekosisteminde bilgi paylaşımının ne kadar iyi olduğunu anlamama yardımcı oluyor.
3. taraf uzantıların %95'i, kapsamlı kod incelemesi ve kodu iyileştirme konusunda rehberlik gerektirir.
Şimdilik yaklaşık 2 yıldır 3. taraf uzantı kod incelemesi yapıyorum. Ne yazık ki, elde ettiğim sonuçlardan memnun olduğumu söyleyemem: 3. taraf uzantıların %95'i, geliştirme konusunda kapsamlı kod incelemesi ve rehberliği gerektirir. Kodlama standartları konusunda çok sessiz olmama izin verin.
Bir uzantı yalnızca belirli işlevlere sahip belirli sayfaları oluşturup kapsasa bile tüm web sitesi sayfalarının performansıyla ilgili sorunlar yaşıyorum. Örneğin, önbelleğe alınamayan bir bloğu varsayılan düzen yapılandırma dosyasına dahil etmek. Magento, tüm sayfalar için sayfa önbelleğini otomatik olarak devre dışı bırakır.
Başka bir örnek, yürütme sonuçlarını bir sınıf değişkeninde saklamadan zaman alıcı arka uç işlemlerini kullanmaktır. İlk sayfa yükünü önemli ölçüde azaltabilir.
Ücretli ve ücretsiz olanlar da dahil olmak üzere yaklaşık 60 uzantıyı inceleme şansım oldu, bu nedenle derecelendirmem bu sayıya dayanmaktadır. Elbette, kullanmanızı önerebileceğim uzantılar var.
Natalie: Sizce en sık karşılaşılan kod optimizasyon sorunları nelerdir?
3. parti uzantılarda Proxy sınıflarının kullanımını hiç görmedim . Ancak, özyinelemeli nesne başlatma süresini azaltabilir.
Max: Genellikle uzantılar, "Uygula ve Teslim Et" diyebileceğim performans optimizasyonu olmadan tek turda oluşturulur. İkinci tur nadiren gelir ve kod optimize edilmeden bırakılır. Örneğin, 3. taraf uzantılarda Proxy sınıflarının kullanımını hiç görmedim . Ancak, özyinelemeli nesne başlatma süresini azaltabilir.
Natalie: Magento 2 için ilk uzantılarını yazan acemi geliştiricilere ne gibi optimizasyon tavsiyesi verebilirsiniz?
Max: Eklentilerinizi Magento 2 ile yerel ortamın dışında, tercihen bulutta bir yerde test etmek harika bir fikirdir. Günümüzde DigitalOcean veya AWS'den 5-10$'a bir sanal sunucuya sahip olmak ve temel bir uçtan uca kullanıcı testi yapmak pahalı değil. En azından, kullanıma hazır Magento 2.x sürümlerine kıyasla oldukça iyi performans farklılıkları gösterebilir.
Bölüm 2: M2 Performans Optimizasyonu
Natalie: Blok önbellek özellikleri hakkında ne söyleyebilirsiniz (önbellek anahtarlarında kullanmak/kaçınmak için daha iyi olan nedir)?
Max: Magento 2 Community Edition, Varnish proxy sunucu desteği ile birlikte gelir. Önbellek hazır olmadığında ilk kez gelen ziyaretçiler hakkında endişelenmeyen tüm satıcılar için harikadır. Varnish'te saklanmayan sayfalar için blok önbellek devreye girer. Müşteri Hesabı, Katalog Arama, Alışveriş Sepeti gibi sayfalarda Vernik beklemeyebilirsiniz.
Blok başına uygun önbellek anahtarı, uygun önbellek girişleri oluşturmak ve Redis gibi bir arka uç deposuna önbellek isabetlerini artırmak için çok önemlidir. İdeal olarak, ön uç işlemeye dahil olan tüm varlıklar , getIdentities() yöntemiyle birlikte gelen Magento\Framework\DataObject\IdentityInterface arabirimini uygulamalıdır. Blok önbelleği için uygun önbellek anahtarlarını derlemeniz gerekiyorsa bu yöntem çok yararlıdır.
Natalie: SQL sorguları optimizasyonu hakkında herhangi bir şey var mı?
Max: SQL optimizasyonu için genellikle bir tablodan seçilen tüm olası veri varyasyonlarını listelemeye çalışırım. İdeal olarak, daha iyi bir performans için tüm sorgular MySQL Dizinlerine ulaşmalıdır. Bunun ideal bir durum olduğunu biliyorum, ancak bir tablodaki çok sayıda kayıt üzerinde sorguları hızlandırmaya gerçekten yardımcı olabilir. Tabii ki, SQL sorgu optimizasyonu çok büyük bir konu, bu yüzden saatlerce konuşabilirim.
Bölüm 3: Magento 2 Arama
Magento 2, M1'den daha iyi bir kullanıma hazır aramaya sahip olmakla övünebilir, ancak yine de bileşik sorgular, yazım hataları, otomatik düzeltme, eş anlamlılar desteklenmez. Ayrıca M2 arama, kategorileri ve CMS sayfalarını taramaz.
Natalie: CE sürümünde aramayı iyileştirmenin en iyi yolları nelerdir: uzantılar mı yoksa harici arama motorları mı?
Max: Magento 2 Community Edition için Elasticsearch kullanmayı düşünüyorum. Tabii ki, ister kurum içi ister 3. taraf uzantıları kullanarak geliştirme gerektirir. Magento 2 projelerinden biri için, ortak arama sorguları için eşanlamlılar ve bir açılış sayfasına yönlendirmeler gibi ek yapılandırmaya sahip yerleşik bir arama kullandık. Ancak bu kısa vadeli bir çözüm, bazı harici servislerle giderdim.
Natalie: Küçük/orta/büyük veri web siteleri için hangisi daha iyi harici arama motorlarından bahsetmişken: Solr, Sphinx veya Elasticsearch (veya başka bir şey)?
Max: Küçük web siteleri için varsayılan Magento 2 aramasını düşünürdüm. Diğerleri için, kendi çözümünüzü oluşturmak istemeniz durumunda, uzantı ve dokümantasyonun ne kadar iyi olduğu ile ilgilidir. Elasticsearch tercih ettiğim seçenek olarak geliyor.
Natalie: Varsayılan işlevselliği iyileştirebilecek arama uzantıları önerebilir misiniz?
Max: MageWorx tarafından yapılan Magento 2 için Otomatik Tamamlama modülünü inceleme deneyimim var. Varsayılan Magento 2 Community Edition otomatik öneri işlevine kıyasla kullanıcı deneyimini önemli ölçüde geliştirir. MageWorx Otomatik Tamamlama modülü, bir Satıcı için daha fazla dönüşüm ve satış sağlayacaktır. Kod uygulaması açısından puanım 5 üzerinden 4,5. Genel bir geliştirici deneyimini artırmak için yapılabilecek bazı küçük iyileştirmeler var. Otomatik Tamamlama modülünün güzel yanlarından biri, indirmenin ücretsiz olmasıdır. Magento 2 Tüccarları için bu modülü kullanmayı düşüneceğim ve tavsiye edeceğim.
Bunun dışında Magento 2 için arama ile ilgili modülleri incelemeye devam edeceğim ve kod kalitesi hakkında geri bildirimde bulunacağım.
Bölüm 4: Magento 2 Zorlukları
Natalie: Sen, Magento ile yıllarca çalıştıktan sonra, savaşta test edilmiş bir Magento geliştiricisisin, platformun ikinci versiyonunun getirdiği en zorlu sorunlar nelerdir?
Örneğin, bildiğim gibi, M2'deki küçük kod değişiklikleri bile bir dizi eyleme yol açar (bin/magento setup:upgrade, bin/magento setup:static-content:deploy, bin/magento setup:di:compile, vb. gibi). )
Max: Çoğu durumda, bir geliştirici PHPStorm'un önünde oturduğunda ve bir kod yazdığında, Magento 2 mimarisini gerçekten kazmak için zaman olmadığını düşünüyorum. Örneğin, UI bileşenlerinden ve bunları kullanma konusunda gerçek örneklerin eksikliğinden şikayet eden birkaç iyi geliştirici tanıyorum. Yeni Magento DevDocs, UI bileşenlerine iyi bir genel bakış sunar.
Magento 1'de iyi deneyime sahip geliştiriciler, Magento 2'yi karmaşık ve bazen zorlayıcı buluyor. Yeni teknoloji her zaman yeni bir şeyler öğrenmek için yeni fırsatlar getirir.
Bununla ilgili bir resim bile var.
Natalie: Ve son olarak, Magento 2 Kasım 2015'te piyasaya sürüldü. Sizce dünya çapındaki tüccarların göç etmeye başlaması için tamamen hazır mı?
Maks: Kesinlikle EVET. Bir yazılım olarak Magento 2, GitHub'daki bir dizi açık sorundan daha fazla faydaya sahiptir. İyi planlanmış bir geçiş ve pazarlama stratejisi durumunda Magento 1'e kıyasla açıkça daha fazla gelir getirebilir. Magento 2 projelerimizden birine Ağustos 2015'te Beta sürümüyken 'Evet' dediğimi hatırlıyorum. Artık Magento 2'ye dayalı e-ticaret web sitelerini kullanmaktan ve oluşturmaktan çok mutluyuz.
Pronko Consulting'deki ekibim, hayata yeni bir vizyon getirmekten ve yeni bir Magento 2 web sitesi başlatmaktan mutluluk duyacaktır.
*****
Max'e bu röportaj için teşekkür eder, kendisine ve ekibine verimli ve başarılı bir yıl dileriz.