Nachdem es in Teil 1 und Teil 2 mehr um Fragen der Hardware und der richtigen Konfiguration des LAMP-Gespannes ging, handelt der 3. Teil direkt vom Magento-System. Zunächst soll ein Update von 1.2 nach 1.3 zeigen ob sich was im Core getan hat und dann habe ich noch eine Extension getestet die eine kürzere Übertragung der Seiten vom Server zum Browser verspricht.
Rückblick
Der Einsatz eines aktuellen Rootservers sowie die Installation von APC und Konfiguration von MySQL ergaben zuletzt eine Performance von 6,74 Requests pro Sekunde auf eine Artikelseite. Weitere versuchen mit TMPFS im Bereich des Cache-Verzeichnisses von Magento ergaben keine Verbesserungen.
Update
Vor dem Update von 1.2.1.2 auf 1.3.2.1 habe ich noch mal die aktuelle Performance gemessen. Da der Webserver inzwischen nicht mehr nur alleine für den Vitalityshop zuständig ist, ist die Leistung wie erwartet etwas geringer geworden.
ab2 -c 5 -n 100 http://www.vitalityshop.de/blue-lagoon-mineral-foaming-cleanser.html
Concurrency Level: 5Time taken for tests: 15.755 secondsComplete requests: 100Failed requests: 0Write errors: 0Total transferred: 2704100 bytesHTML transferred: 2659400 bytesRequests per second: 6.35 [#/sec] (mean)Time per request: 787.747 [ms] (mean)Time per request: 157.549 [ms] (mean, across all concurrent requests)Transfer rate: 167.61 [Kbytes/sec] receivedConcurrency Level: 5
Time taken for tests: 15.755 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Total transferred: 2704100 bytes
HTML transferred: 2659400 bytes
Requests per second: 6.35 [#/sec] (mean)
Time per request: 787.747 [ms] (mean)
Time per request: 157.549 [ms] (mean, across all concurrent requests)
Transfer rate: 167.61 [Kbytes/sec] received
Der neue Startwert für Vergleiche ist also 6,35 Requests pro Sekunde. Nach dem Update auf die Version 1.2.3.1 und Neuerstellung sämtlicher Caches und Indexe ergab die neue Messung 7.80 Requestst pro Sekunde.
Wow, da bin ich doch tatsächlich beeindruckt. In den Releasenotes stand zwar etwas von Perfomance-Steigerung. Aber das steht da ja eigentlich immer. Das es aber 23% werden, das hatte ich nicht erwartet. Glückwunsch Varien!
Cache Layered Navigation
Es gibt in der Cache-Verwaltung einen Schalter um Caching für Layered Navigation zu aktivieren. Die Funktion ist noch Beta und sollte zunächst gründlich getestet werden, bevor man sie bei seinem Shop einsetzt. Ein kurzer Test ergab bei meinem Shop keine Änderung. Laut Beschreibung soll das aber auch nur für umfangreiche Kataloge nützlich sein. Ich habe das wieder deaktiviert.
Minify und Fooman Speedster
Minify ist ein PHP-Script um die Anzahl und Menge der Daten einer Seite zur reduzieren, die vom Webserver zum Browser geschickt werden müssen. Das wird durch Zusamenfassung, Komprimierung und speziellen HTTP-Headern erreicht. Als Ergebnis sollte eine komplette Seite im Browser schneller geladen werden.
Minify ist zwar ein Serverscript, die Performance-Steigerung ergibt sich hier aber nicht durch eine schnellere Seitenerstellung auf dem Server, sondern durch kürzere Übertragung der Daten zwischen Webserver und Browser. Für Magento gibt es die Extension Fooman Speedster die Minify einsetzt.
Um die Wirkung des Scripts prüfen zu können muss die Messung also im Browser stattfinden. Ich nehme dazu YSlow. Hier zunächst die Ergebnisse ohne Fooman Speedster:
Man sieht hier sehr deutlich das der eigentliche HTML-Anteil mit 26,7 KByte im Vergleich zu den anderen Bereichen sehr klein ist. Die JavaScript- und CSS-Dateien belegen zusammen 375,2 KByte von insgesamt 459.0 KByte für den kompletten Request. Dieses Packet muss für jeden neuen Besucher zunächst mal zum Browser übertragen werden. Nach dem Erstkontakt sollte dann (hoffentlich) das Caching des Browsers greifen und es wird nur noch der HTML-Teil der Seiten geladen. In diesem Beispiel also die 26,7 KByte für den HTML-Teil. Es werden aber trotzdem noch bei jedem Request 31 Anfragen zum Server übertragen.
Mit Fooman Speedster zeigt sich dann folgenden Bild:
Die gesamte Übertragungsgröße für die erste Seite ist von 459,0 KByte auf 170,5 KByte geschrumpft. Bei der gecachten Seite sind nun 7 Requests pro Seite weniger notwendig. Und die Generierung der Seiten auf dem Server dauert auch nicht länger. Ich kann den Einsatz der Extension also nur empfehlen. Es ist nach der Installation lediglich ein Eintrag in der .htaccess vorzunehmen und das Verzeichnis var/minifycache muss Schreibrechte haben.
Fazit
Mit der Version 1.3 von Magento ist Varien ein großer Performance-Sprung gelungen. Bei meinem Shop brachte das Update eine 23% Steigerung im Vergleich zu 1.2.
Mit der einfach zu installierenden Extension Fooman Speedster kann man die Dauer zur Anzeige der ersten Seite für Neukunden deutlich verkürzen. Und schließlich ist der erste Eindruck ja sehr wichtig.
Wie immer würde ich mich über Feedback freuen und zwar nicht nur per E-Mail sondern auch direkt hier im Block

