Wie Sie mit Magento 2 maximale Effizienz erzielen. Interview mit Max Pronko
Veröffentlicht: 2017-01-17Max Pronko ist einer dieser Magento-Gurus, denen ein Neuling folgen muss. Er ist ein Magento-Experte und öffentlicher Redner, ein Magento Certified Developer und ein beliebter Magento 2-Blogger.
Mit 10 Jahren Erfahrung in der Softwareentwicklung und Beratung in Magento hat Max erfolgreich qualitativ hochwertige Produkte von mittlerem bis großem Maßstab entworfen und implementiert.
Folge Maxi auf Twitter.
Kürzlich war Max auf der Meet Magento Ungarn und präsentierte echte Anwendungsfälle der Leistungsoptimierung in der Magento 2 Keynote . In diesem Zusammenhang möchten wir unser Interview mit ein paar Fragen beginnen, die sich direkt auf diese Präsentation beziehen.
Teil 1: Häufige Herausforderungen bei Magento-Erweiterungen
Fast jeder Magento 2-Händler verwendet Erweiterungen von Drittanbietern, die einerseits die Funktionalität der Standardplattformen erheblich verbessern, andererseits aber den Performance-Workflow negativ beeinflussen.
Natalie: Wie können Sie insgesamt die Codequalität von Erweiterungen von Drittanbietern und die Art und Weise bewerten, wie sie die Serverlast beeinflussen können?
Max: Vielen Dank für die Gelegenheit, über Magento 2 zu sprechen, Natalie. Ich verfolge Ihren Blog seit mehr als einem Jahr und jedes Mal, wenn ich ihn besuche, finde ich einige interessante Artikel. Danke dafür.
Wie Sie vielleicht wissen, überprüfe ich gerne Code aus folgenden Gründen:
- Zuerst sammle ich Erfahrungen und beobachte interessante Techniken, wie man Geschäftsanforderungen in voll funktionsfähige, qualitativ hochwertige Features umwandelt. Vor allem, wenn es um Magento 2 geht.
- Zweitens hilft es mir zu verstehen, wie gut der Wissensaustausch im Magento-Ökosystem ist.
95 % der Erweiterungen von Drittanbietern erfordern eine umfassende Codeüberprüfung und Anleitung zur Verbesserung des Codes.
Ich mache jetzt seit ungefähr 2 Jahren Codeüberprüfungen für Erweiterungen von Drittanbietern. Leider kann ich nicht sagen, dass ich mit den erzielten Ergebnissen zufrieden bin: 95 % der Erweiterungen von Drittanbietern erfordern eine umfassende Überprüfung des Codes und Anleitungen zur Verbesserung. Lassen Sie mich über Codierungsstandards sehr ruhig sein.
Ich habe Probleme mit der Leistung aller Seiten der Website, selbst wenn eine Erweiterung nur eine Auswahl von Seiten mit bestimmten Funktionen erstellt und abdeckt. Beispielsweise das Einfügen eines nicht zwischenspeicherbaren Blocks in die Standardlayout-Konfigurationsdatei. Magento deaktiviert den Seiten-Cache automatisch für alle Seiten.
Ein weiteres Beispiel ist die Verwendung zeitaufwändiger Backend-Operationen, ohne die Ausführungsergebnisse in einer Klassenvariablen zu speichern. Es kann das Laden der ersten Seite drastisch reduzieren.
Ich hatte die Gelegenheit, etwa 60 Erweiterungen zu überprüfen, darunter kostenpflichtige und kostenlose, daher basiert meine Bewertung auf dieser Zahl. Natürlich gibt es die Erweiterungen, die ich empfehlen kann.
Natalie: Was sind Ihrer Meinung nach die häufigsten Probleme bei der Code-Optimierung?
Ich habe noch nie die Verwendung von Proxy-Klassen in Erweiterungen von Drittanbietern gesehen. Es kann jedoch die Zeit der rekursiven Objektinitialisierung verringern.
Max: Normalerweise werden Erweiterungen in einer Runde ohne Leistungsoptimierung erstellt, was ich „Implement and Deliver“ nennen kann. Eine zweite Runde kommt selten, und der Code bleibt unoptimiert. Zum Beispiel habe ich noch nie die Verwendung von Proxy-Klassen in Erweiterungen von Drittanbietern gesehen. Es kann jedoch die Zeit der rekursiven Objektinitialisierung verringern.
Natalie: Welchen Optimierungsrat können Sie unerfahrenen Entwicklern geben, die ihre ersten Erweiterungen für Magento 2 schreiben?
Max: Es ist eine gute Idee, Ihre Erweiterungen mit Magento 2 außerhalb der lokalen Umgebung zu testen, am besten irgendwo in der Cloud. Heutzutage ist es nicht teuer, einen virtuellen Server von DigitalOcean oder AWS für 5-10 US-Dollar zu haben und grundlegende End-to-End-Benutzertests durchzuführen . Zumindest kann es im Vergleich zu den Out-of-the-Box-Versionen von Magento 2.x ziemlich gute Leistungsunterschiede aufweisen.
Teil 2: M2-Leistungsoptimierung
Natalie: Was können Sie über Block-Cache-Besonderheiten sagen (was ist besser zu verwenden/in Cache-Schlüsseln zu vermeiden)?
Max: Magento 2 Community Edition wird mit Varnish-Proxyserver-Unterstützung geliefert. Es ist großartig für alle Händler, die sich keine Sorgen um Erstbesucher machen, wenn der Cache noch nicht bereit ist. Der Block-Cache kommt für Seiten ins Spiel, die nicht in Varnish gespeichert sind. Auf Seiten wie Kundenkonto, Katalogsuche, Warenkorb dürfen Sie keinen Lack erwarten.
Der richtige Cache-Schlüssel pro Block ist sehr wichtig, um korrekte Cache-Einträge zu erstellen und die Cache-Hits in einem Backend-Speicher wie Redis zu erhöhen. Idealerweise sollten alle Entitäten, die am Front-End-Rendering beteiligt sind, die Schnittstelle Magento\Framework\DataObject\IdentityInterface implementieren, die mit der Methode getIdentities() geliefert wird. Diese Methode ist sehr hilfreich, wenn Sie die richtigen Cache-Schlüssel für den Block-Cache kompilieren müssen.
Natalie: Irgendwas über die Optimierung von SQL-Abfragen?
Max: Für die SQL-Optimierung versuche ich normalerweise, alle möglichen Datenvariationen aus einer Tabelle auszuwählen. Idealerweise sollten alle Abfragen MySQL-Indizes treffen, um eine bessere Leistung zu erzielen. Ich weiß, dass dies ein idealer Fall ist, aber es kann wirklich helfen, Abfragen für eine große Anzahl von Datensätzen in einer Tabelle zu beschleunigen. Natürlich ist die Optimierung von SQL-Abfragen ein riesiges Thema, daher kann ich stundenlang darüber sprechen.
Teil 3: Magento 2-Suche
Magento 2 kann sich rühmen, eine bessere Out-of-the-Box-Suche als M1 zu haben, aber zusammengesetzte Abfragen, Tippfehler, Autokorrektur und Synonyme werden immer noch nicht unterstützt. Darüber hinaus scannt die M2-Suche keine Kategorien und CMS-Seiten.
Natalie: Was sind die besten Möglichkeiten, um die Suche in der CE-Edition zu verbessern: Erweiterungen oder externe Suchmaschinen?
Max: Ich denke darüber nach, Elasticsearch für Magento 2 Community Edition zu verwenden. Natürlich ist eine Entwicklung erforderlich, ob intern oder mit Erweiterungen von Drittanbietern. Für eines der Magento 2-Projekte haben wir eine integrierte Suche mit zusätzlicher Konfiguration wie Synonymen und Weiterleitungen auf eine Zielseite für allgemeine Suchanfragen verwendet. Dies ist jedoch eine kurzfristige Lösung, ich würde mit einem externen Dienst gehen.
Natalie: Apropos externe Suchmaschinen, welche ist besser für kleine/mittlere/Big-Data-Websites: Solr, Sphinx oder Elasticsearch (oder eine andere)?
Max: Für kleine Websites würde ich die Standardsuche von Magento 2 in Betracht ziehen. Für andere geht es eher darum, wie gut Erweiterung und Dokumentation sind, falls Sie Ihre eigene Lösung bauen möchten. Elasticsearch ist meine bevorzugte Option.
Natalie: Können Sie Sucherweiterungen empfehlen, die die Standardfunktionalität verbessern können?
Max: Ich habe Erfahrung darin, das AutoComplete-Modul für Magento 2 von MageWorx zu überprüfen. Es verbessert die Benutzererfahrung im Vergleich zur Standardfunktion für automatische Vorschläge der Magento 2 Community Edition erheblich. Das MageWorx AutoComplete-Modul führt zu mehr Conversions und Verkäufen für einen Händler. In Bezug auf die Codeimplementierung beträgt meine Punktzahl 4,5 von 5. Es gibt einige kleinere Verbesserungen, die vorgenommen werden könnten, um das Entwicklererlebnis insgesamt zu verbessern. Eines der netten Dinge am AutoComplete-Modul ist die Tatsache, dass es kostenlos heruntergeladen werden kann. Ich werde die Verwendung dieses Moduls in Betracht ziehen und es Magento 2-Händlern empfehlen.
Abgesehen davon werde ich weiterhin suchbezogene Module für Magento 2 überprüfen und mein Feedback zur Codequalität geben.
Teil 4: Magento 2-Herausforderungen
Natalie: Sie sind eine kampferprobte Magento-Entwicklerin, was sind nach Jahren der Arbeit mit Magento die größten Herausforderungen, die die zweite Version der Plattform mit sich bringt?
Zum Beispiel führen, wie ich weiß, selbst geringfügige Codeänderungen in M2 zu einer Reihe von Aktionen (wie bin/magento setup:upgrade, bin/magento setup:static-content:deploy, bin/magento setup:di:compile usw. )
Max: Ich denke, in den meisten Fällen, wenn ein Entwickler vor PHPStorm sitzt und einen Code schreibt, bleibt keine Zeit, sich wirklich mit der Magento 2-Architektur zu beschäftigen. Ich kenne zum Beispiel ein paar gute Entwickler, die sich über UI-Komponenten und den Mangel an echten Beispielen für deren Verwendung beschweren. Neue Magento DevDocs geben einen guten Überblick über UI-Komponenten.
Entwickler mit guter Erfahrung in Magento 1 finden Magento 2 komplex und manchmal herausfordernd. Neue Technologien bringen immer neue Möglichkeiten, etwas Neues zu lernen.
Es gibt sogar ein Bild davon.
Natalie: Und schließlich wurde Magento 2 im November 2015 veröffentlicht. Glauben Sie, dass es vollständig bereit ist, damit die Händler weltweit mit der Migration beginnen können?
Max: Absolut JA. Magento 2 hat als Software mehr Vorteile als einige offene Probleme auf GitHub. Im Falle einer gut geplanten Migrations- und Marketingstrategie kann es im Vergleich zu Magento 1 offensichtlich mehr Umsatz bringen. Ich erinnere mich, dass ich im August 2015 „Ja“ zu einem unserer Magento 2-Projekte gesagt habe, als es nur eine Beta-Version war. Jetzt sind wir mehr als glücklich, E-Commerce-Websites auf Basis von Magento 2 zu verwenden und zu erstellen.
Mein Team von Pronko Consulting freut sich darauf, neue Visionen zum Leben zu erwecken und eine neue Magento 2-Website zu starten.
*****
Wir danken Max für dieses Interview und wünschen ihm und seinem Team ein produktives und erfolgreiches Jahr.