{"id":1970,"date":"2013-06-02T10:55:27","date_gmt":"2013-06-02T10:55:27","guid":{"rendered":"http:\/\/www.ollmetzer.com\/?p=1970"},"modified":"2013-06-02T10:55:27","modified_gmt":"2013-06-02T10:55:27","slug":"onlineshops-geschwindigkeit-versus-flexibilitat","status":"publish","type":"post","link":"https:\/\/www.ollmetzer.com\/?p=1970","title":{"rendered":"Onlineshops &#8211; Geschwindigkeit versus Flexibilit\u00e4t."},"content":{"rendered":"<p>Ladegeschwindigkeiten und Spitzenlastf\u00e4higkeit sind zunehmend wichtige Eigenschaften von Onlineshops. Gr\u00fcnde daf\u00fcr sind steigende Besucherzahlen, \u00c4nderungen am Google Pagerank, nachweislich steigende Abbruchquoten bei l\u00e4ngeren Ladezeiten und Lastspitzen z.B. durch Fernsehwerbung.<\/p>\n<p><strong>Need for speed<\/strong><\/p>\n<p>In den letzten 12 Monaten sind daher viele grosse und mittlere Onlineshops dazu \u00fcbergegangen, Full-Page-Chaching einzusetzen. Der Erfolg der Bem\u00fchungen kann sich sehen lassen. Noch vor einiger Zeit waren Ladezeiten von 3-6 Sekunden f\u00fcr eine Kategorie- oder Artikeldetailseite eines durchschnittlichen Onlineshops normal. Anbieter, die bereits die Ladezeiten ihrer Shops optimiert haben verbl\u00fcffen hingegen (falls es die eigene Internetanbindung hergibt) mit Ladezeiten von zum Teil unter 1,5 Sekunden &#8211; inklusive aller Bilder und Skripte wohlgemerkt. Die HTML Seite alleine ist meist schon nach 100ms ausgeliefert.<\/p>\n<p><em>Ist nun also alles eitel Sonnenschein?<\/em><\/p>\n<p>Nicht ganz. Es gibt im Leben nichts umsonst, wie meine Oma zu sagen pflegte. Die beeindruckende Steigerung der Geschwindigkeit wird mit anderen Einschr\u00e4nkungen erkauft. Stellen wir die Vor- und Nachteile doch einmal kurz gegen\u00fcber:<\/p>\n<table>\n<tbody>\n<tr>\n<th style=\"width: 50%;\">Shops ohne Full Page Cache<\/th>\n<th style=\"width: 50%;\">Shops mit Full Page Cache<\/th>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\" colspan=\"2\">Vorteile<\/td>\n<\/tr>\n<tr>\n<td>+ Dynamische Seitenerstellung erm\u00f6glicht jede denkbare Anpassung an Client, Herkunft, Marketing etc.&nbsp;<\/p>\n<p>+ \u00c4nderungen an Artikeln, Kategorien und Landingpages sind sofort online<\/td>\n<td>+ Extrem schnell (f\u00fcr cachebare Seiten)&nbsp;<\/p>\n<p>+ Gesteigerte Skalierbarkeit<\/p>\n<p>+ weniger Anf\u00e4lligkeit f\u00fcr Lastspitzen<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: center;\" colspan=\"2\">Nachteile<\/td>\n<\/tr>\n<tr>\n<td>&#8211; Langsame Antwortzeiten&nbsp;<\/p>\n<p>&#8211; Hohe Systemlast<\/td>\n<td>&#8211; Nur bestimmte Seitentypen sind cachebar&nbsp;<\/p>\n<p>&#8211; Die Invalidierung von Seiten kann komplex und fehleranf\u00e4llig sein<\/p>\n<p>&#8211; Gecachte Seiten sind nicht mehr personalisierbar<\/p>\n<p>&#8211; Gecachte Seiten k\u00f6nnen nicht mehr serverseitig auf Ger\u00e4teklassen angepasst werden<\/p>\n<p>&#8211; Gecachte Seiten k\u00f6nnen nicht mehr serverseitig auf Marketingmassnahmen angepasst werden<\/p>\n<p>&#8211; Gecachte taugen nicht zu serverseitigen multivariatem Testing<\/p>\n<p>&#8211; Tools zur Erfolgsmessung von Marketingmassnahmen werden schwieriger<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>In der Gegen\u00fcberstellung wird deutlich, dass man sich den Geschwindigkeitszuwachs mit einer erheblichen Einschr\u00e4nkung der Flexibilit\u00e4t erkauft. F\u00fcr einige Anbieter &#8211; Je nach Sortiment und Gesch\u00e4ftsmodell mag das unbedeutend sein. F\u00fcr andere Anbieter ist dies jedoch eine empfindliche Einschr\u00e4nkung. Neue Gesch\u00e4ftsmodelle lassen sich so zudem ebenfalls nicht einf\u00fchren.<\/p>\n<p><strong>L\u00f6sungen f\u00fcr die goldene Mitte<\/strong><\/p>\n<p>Zur Zeit gibt es nur Shops die entweder in die eine oder in die andere Richtung optimiert sind. Es fehlen jedoch L\u00f6sungen f\u00fcr die goldene Mitte: Shops, die flexibel sind und dennoch schnell. Der Bedarf daf\u00fcr ist vorhanden, wie ich in einigen Gespr\u00e4chen mit Shopbetreibern in letzter Zeit feststellen durfte. Was kann man nun tun?<\/p>\n<p>Im Prinzip gibt es zwei M\u00f6glichkeiten, wie man das Ziel hoher Performance bei gleichzeitiger Flexibilit\u00e4t erreichen kann:<\/p>\n<ul>\n<li>Herausnahme von Snippets mit variablem Inhalt aus der gecachten Seite<\/li>\n<li>Ein geschwindigkeitsoptimierter Catalogserver.<\/li>\n<\/ul>\n<p>Schauen wir uns bei M\u00f6glichkeiten etwas genauer an:<\/p>\n<p><strong>1.) Caching und Snippets<\/strong><\/p>\n<p>Wenn eine Seite nur deshalb nicht gecacht werden kann, weil sie ein oder zwei ver\u00e4nderliche Element enth\u00e4lt, bietet es sich an, diese Elemente als separates Snippet vom Caching auszunehmen. Ein Element, an dem das sehr deutlich wird, ist der Mini-Warenkorb, der heutzutage auf fast jeder Shopseite zu finden ist.<\/p>\n<p>Sobald der Kunde etwas in den Warenkorb gelegt hat, ist dieser Bereich individuell. Somit kann f\u00fcr diesern Kunden quasi keine Seite mehr aus dem Cache bedient werden, obwohl sich der Rest auf den Seiten \u00fcberhaupt nicht ver\u00e4ndert hat.<\/p>\n<p>Daher wird dieser Bereich als Snippet definiert. Das Caching System liefert weiterhin die Seite aus dem Speicher aus, ersetzt jedoch zuvor den Mini-Warenkorb Bereich per Server Side Include durch die individualisierten Code vom Application Server.<\/p>\n<p><em>Vorteil<\/em>: Der Anteil der direkt aus dem Cache auslieferbaren Seiten erh\u00f6ht sich sp\u00fcrbar, Gesamtperformance und Systemlast sinken.<\/p>\n<p><em>Nachteil<\/em>: Durch die zus\u00e4tzlichen Regeln wird das Caching komplizierter und langsamer. Falls mehrere Snippets pro Seite definiert werden, verringert sich die Performance signifikant durch mehrfache Abfrage des Application Servers und den damit verbundenen Overhead.<\/p>\n<p><strong>2.) Optimierter Catalogserver<\/strong><\/p>\n<p>Um wirkliche Flexibilit\u00e4t zur\u00fcckzugewinnen, kommt man um einen optimierten Catalogserver nicht herum. Die Geschwindigkeit erreicht er durch konsequentes Weglassen und Datenoptimierung, wie ich bereits im Artikel &#8222;<a title=\"Schnell, schneller, noch schneller!!!\" href=\"\/?p=1834\" target=\"_blank\">Schnell, schneller, noch schneller !!!<\/a>&#8220; schrieb.<\/p>\n<p>Es sollte ein radikal reduziertes, geschwindigkeitsoptimiertes Framework zum Einsatz kommen. Normale Shopframeworks haben durch die maximale Flexibilit\u00e4t zuviel Overhead<\/p>\n<p>Die Datenstrukturen m\u00fcssen auf minimierte Suchzeiten optimiert werden. Flattables sind hier normalisierten Strukturen vorzuziehen. Hier ist zu pr\u00fcfen, ob Key-Value Stores, wie z.B. Couchbase signifikante Vorteile gegen\u00fcber SQL haben.<\/p>\n<p><em>Vorteil<\/em>: Eine immer noch hohe Geschwindigkeit, bei hoher Flexibilit\u00e4t<\/p>\n<p><em>Nachteil<\/em>: Langsamer als echte Full Page Caches, eine Anpassung von Code und Daten an das Produkte und Gesch\u00e4ftsmodell ist n\u00f6tig, die Einbindung des eigentlichen Shopsystems als Transaktionsserver bietet einige H\u00fcrden.<\/p>\n<p><strong>Der Blick in die nahe Zukunft<\/strong><\/p>\n<p>Beide Wege zur Performancesteigerung haben ihr f\u00fcr und wieder. Je nach Angebot und Gesch\u00e4ftsmodell kann der eine oder der andere Weg sinnvoller sein.<\/p>\n<p>Beide Wege sind nicht ohne Stolpersteine und mit den gegenw\u00e4rtigen Shopsystemen nicht out-of-the-box realisierbar. Der zunehmende Druck in der Branche zu performanten und dennoch flexiblen L\u00f6sungen wird jedoch dazu f\u00fchren, dass die Herausforderungen angegangen werden. Daher erwarte ich in der n\u00e4chsten Zeit verst\u00e4rkte Bem\u00fchungen auf beiden Wegen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ladegeschwindigkeiten und Spitzenlastf\u00e4higkeit sind zunehmend wichtige Eigenschaften von Onlineshops. Gr\u00fcnde daf\u00fcr sind steigende Besucherzahlen, \u00c4nderungen am Google Pagerank, nachweislich steigende Abbruchquoten bei l\u00e4ngeren Ladezeiten und Lastspitzen z.B. durch Fernsehwerbung. Need for speed In den letzten 12 Monaten sind daher viele grosse und mittlere Onlineshops dazu \u00fcbergegangen, Full-Page-Chaching einzusetzen. Der Erfolg der Bem\u00fchungen kann sich sehen [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,16],"tags":[],"class_list":["post-1970","post","type-post","status-publish","format-standard","hentry","category-development","category-ecommerce"],"_links":{"self":[{"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/posts\/1970","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1970"}],"version-history":[{"count":0,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=\/wp\/v2\/posts\/1970\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1970"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1970"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.ollmetzer.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1970"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}