Shopware Core Optimierung Überblick Überblick Shopware Core Optimierung Ein Vortrag von enrrud
Überblick Vorstellung Die Aufgabe Tools Maßnahmen Fazit
Vorstellung Enrico Rudolph Programmierer Shopware Projekte Seit 5.1 Magento Projekte Seit 1.5 PHP | JAVA
Überblick Vorstellung Die Aufgabe Tools Maßnahmen Fazit
Die Aufgabe First Request schneller machen Bottlenecks finden Datenbankabfragen reduzieren Geschwindigkeit steigern Speicherverbrauch reduzieren
Überblick Vorstellung Die Aufgabe Tools Maßnahmen Fazit
Tools Xdebug https://xdebug.org/ Z-Ray http://www.zend.com/en/products/server/z-ray ShyimProfiler https://github.com/shyim/shopware-profiler Tideways https://tideways.io/
Überblick Vorstellung Die Aufgabe Tools Maßnahmen Fazit
Maßnahmen SEO Index / URL Rewrite Cache Lifetime SQLs reduzieren Caches Kleine Verbesserungen
Seo Index / URL Rewrite Erweiterung der 's_rewrite_url' Tabelle Controller / action / element_id SEO Indexer erweitert
Seo Index / URL Rewrite Engine/Shopware/ Core/sRewriteTable.php Components/SitePageMenu.php Components/Translation.php
Seo Index / URL Rewrite Was hat es gebracht? Schnellere DB Abfragen Keine Volltextsuche Weniger PostFilter URL Generierungen Reduzierung der SQL-Abfragen Reduzierung der IN-Queries bei PostFilter
Maßnahmen SEO Index / URL Rewrite Cache Lifetime SQLs reduzieren Caches Kleine Verbesserungen
Cache Lifetime Engine/Shopware/Bundle/StoreFrontBundle/ Gateway/DBAL/FieldHelper.php GetTableFields() Cachelaufzeit setzen
Cache Lifetime 0 vs. false vs. Null engine/Library/Zend/Cache/Backend/File.php
Cache Lifetime Was hat es gebracht? Cache für Tabellenspalten Weniger SQL-Abfragen schnellerer Zugriff
Maßnahmen SEO Index / URL Rewrite Cache Lifetime SQLs reduzieren Caches Kleine Verbesserungen
SQLs reduzieren engine/Shopware/Bundle/StoreFrontBundle/ Service/Core/ListProductService.php Methode: getList() Entfernen von Methoden
SQLs reduzieren engine/Shopware/Components/ Compatibility/LegacyStructConverter.php Methode: getCategoryCanonicalParams() Params festgesetzt Methode getCategoryChildrenCount() ersetzt gesammelt holen mit Cache
SQLs reduzieren
SQLs reduzieren Was hat es gebracht? Cache für Kategorieanzahl Weniger SQL-Abfragen Weniger DB-Last
Maßnahmen SEO Index / URL Rewrite Cache Lifetime SQLs reduzieren Caches Kleine Verbesserungen
Caches | Config engine/Shopware/Components/ Plugin/Namespace.php Plugin/DBALConfigReader.php Shopware Cache für Pluginconfiguration Verbessertes Abholen der Pluginconfigs SQL umgestellt und gesammelt abgeholt Interner Cache pro Plugin
Caches | Translation engine/Shopware/Components/ Translation.php Shopware Cache für Translations Verbessertes Abholen der Translations Interner Cache pro Translation
Caches | Emotion engine/Shopware/Bundle/EmotionBundle/ Service/EmotionElementService.php Cache für Emotion-Elements Cache für Emotion-Elements Data Schnelleres Laden der Daten Weniger SQL-Abfragen Schnellerer Zugriff
Caches | Emotion engine/Shopware/Bundle/StoreFrontBundle/ Service/Core/MediaService.php Gateway/DBAL/ListProductMediaGateway.php Methoden hinzugefügt: GetByPath | getListByPath für Emotion Elemente Einsparung: 1 Abfrage pro Element
Caches | Core engine/Shopware/Core/sAdmin.php Cache für: Payment Means Countries Translations Shipping UserData Risks
Caches | Models engine/Shopware/Models/ Category/Repository.php Methode: getCategoryPathBefore() Ermittlung der Elternkategorie verbessert Rekursion vermieden Weniger SQL-Abfragen
Maßnahmen SEO Index / URL Rewrite Cache Lifetime SQLs reduzieren Caches Kleine Verbesserungen
Kleine Verbesserungen engine/Shopware/Bundle/StoreFrontBundle/ Gateway/DBAL/FieldHelper.php Felder für das Listing reduzieren Description Description_long Reduzierung DB Traffic
Kleine Verbesserungen engine/Shopware/Bundle/StoreFrontBundle/ Service/Core/ContextService.php
Kleine Verbesserungen Was hat es gebracht? Nur ein Shopcontext Objekt Cache greift bei Mehrfachzugriff Weniger Objekte Speichereinsparung
Tipps und Tricks Shopbetreiber Services Redis / Memcache CDN Media / Speicherplatz
Sonstiges | Shopbetreiber Shopbetreiber E-Mail Niemals mehrere Mailadressen eingeben TemplateMail-Service erweitern Eigene Freitextfelder für CC/BCC
Sonstiges | Services Services ab Shopware 5.2 in services.xml Services richtig dekorieren Korrekte(s) Interface/Klasse verwenden Den Elternservice ansprechen Servicename '.inner' Nur die Methoden überschreiben die man braucht
Sonstiges | Redis / Memcache Memcache für die Sessions Locking ab 5.3 Redis für den Cache
Sonstiges | CDN / Media !! Vorsicht bei der Verwendung von CDN !! Stolperfalle: /media/.htaccess Der Sessionkiller bei CDN Benutzung Es droht Konversionverlust
Sonstiges | Speicherplatz Der Media-Ordner kann sehr groß werden Abhängig von: Anzahl der Thumbnails + HiRes Thumbnailgröße Media regelmäßig aufräumen Nicht benötigte Thumbnails entfernen
Fazit Man kann noch einiges optimieren Events / Services verwenden Updates einspielen Nicht alles als gegeben hinnehmen Individuell an die Bedürfnisse anpassen