Magento - Das Handbuch für Entwickler (eBook) - Roman Zenner, Vinai Kopp, Claus Nortmann, Sebastian Heuer, Dimitri Gatowski, Daniel Brylla
Fotogalerie

Roman Zenner, Vinai Kopp, Claus Nortmann, Sebastian Heuer, Dimitri Gatowski, Daniel Brylla 

Magento - Das Handbuch für Entwickler (eBook)

Programmierung, Anpassung & Integration

eBook
 
Nicht lieferbar
Nicht lieferbar
Bewerten Empfehlen Merken Auf Lieblingsliste


Magento - Das Handbuch für Entwickler (eBook)

Magento ist ein mächtiges E-Commerce-System, das sich dank des modularen Aufbaus sehr flexibel gestalten und erweitern lässt. Ziel dieses Buches ist es, die wesentlichen Bestandteile des Systems zu beleuchten und ihr Zusammenspiel im praktischen Einsatz zu zeigen. Es richtet sich an erfahrene Entwickler, die bereits Online-Shops mit Magento umgesetzt haben und nun tiefer in die Materie einsteigen wollen.
Die Magento-Architektur
In diesem Buch wird die bisher weitgehend undokumentierte Architektur von Magento erstmals systematisch erläutert. Die Autoren werfen dabei einen detaillierten Blick unter die Haube des E-Commerce-Systems und erklären, welche (Programmier-)Konzepte Magento zugrunde liegen. Mit diesem Wissen im Hinterkopf können Sie später selbst souveräner mit dem System umgehen, vor allem, wenn es um die Entwicklung eigener Extensions geht.
Rezepte aus der Praxis
Nachdem die technischen Grundlagen von Magento beleuchtet wurden, geht es um die praktische Arbeit mit dem Shopsystem. In bewährter Kochbuch-Manier widmet sich das Buch den zentralen Themen und Herausforderungen, denen Sie als Entwickler immer wieder begegnen. So wird der Umgang mit Produkten und Kategorien, Angeboten und Bestellungen sowie Bezahlung und Versand anhand typischer Szenarien erklärt. Darüber hinaus erfahren Sie Wissenswertes über die Systemintegration in Dritt- oder ERP-Systeme und beschäftigen sich damit, wie Sie eine gute Performance und Skalierbarkeit des Shops gewährleisten.
Wissen aus erster Hand
Das Buch wurde von sechs erfahrenen »Magentoianern« verfasst, die diese Software schon in zahlreichen Projekten eingesetzt haben und somit Magento kennen wie ihre eigene Westentasche. Sie bringen umfassende Erfahrungen im Enterprise-Segment mit und waren mit ihrem Team bereits weltweit an großen Magento-Projekten beteiligt.
Code zum Download
Der im Buch beschriebene Code steht Ihnen zum Download zur Verfügung. So können Sie die im Rezeptteil des Buches erarbeiteten Extensions problemlos an Ihre eigenen Bedürfnisse anpassen und in der Praxis nutzen.



Produktinformation

  • Deutsch
  • ISBN-13: 9783897219298
  • ISBN-10: 3897219298
  • Best.Nr.: 31336225

Leseprobe zu "Magento - Das Handbuch für Entwickler (eBook)"

"KAPITEL 8 Performance und Skalierbarkeit (S. 191-192)

8.0 Einführung


Kurze Ladezeiten werden als wichtiges Qualitätsmerkmal von Websites gesehen. So haben Benutzerexperimente bei Amazon und Google gezeigt, dass schon Verzögerungen im Bereich von 100 Millisekunden von Benutzern negativ wahrgenommen werden und so zu einem geringeren Umsatz führen (wenn Sie mehr darüber erfahren möchten, finden Sie unter http://glinden.blogspot.com/2006/11/marissa-mayer-at-web-20.html ausführlichere Informationen).

Es lohnt sich also eigentlich bei jedem Projekt, etwas Zeit in die Verbesserung der Performance zu investieren. Führende Magento-Shops schaffen einen kompletten Seitenaufbau in 1,5 bis 2 Sekunden. In diesem Kapitel werden Sie Rezepte kennenlernen, die Ihnen eine ähnliche Performance ermöglichen. In engem Zusammenhang mit der Performance steht die Skalierbarkeit – ein Shop ist performant, wenn er bei nur einem Zugriff schnell reagiert; er ist skalierbar, wenn diese Eigenschaft auch bei vielen gleichzeitigen Anfragen erhalten bleibt. Wie wir zeigen werden, lässt sich mit Magento ein höchst performanter Shop aufbauen, der Ladezeiten unter einer Sekunde bietet.

Die Skalierbarkeit lässt sich ebenfalls sehr weit steigern. Hinter beidem steckt ein einfaches Konzept: die gezielte Verwendung von Caching, also dem Zwischenspeichern von Inhalten zur wiederholten Ausgabe. In diesem Kapitel gehen wir zunächst auf etwas Hintergrundwissen ein. Die Performance von Webapplikationen im Allgemeinen ist schwer zu verstehen und hängt von vielen Faktoren ab. Überraschend ist, dass die Ausführungszeit der Applikation – die Zeit, in der Magento auf dem Server ausgeführt wird – in der Regel weniger als die Hälfte der gesamten Ladezeit des Benutzers ausmacht; die übrige Zeit wird benötigt, um statische Dateien zu laden, JavaScript zu interpretieren und die Seite zu rendern. Wie wir sehen werden, kann man durch vergleichsweise einfache Eingriffe hier viele easy wins erreichen.

Danach stellen wir Ihnen einige – ebenfalls kostenlose – Tools vor, mit deren Hilfe Sie die Skalierbarkeit und Performance eines Magento-Shops analysieren und so gezielte Verbesserungen vornehmen können. Mit Fiddler steht Ihnen ein sehr komfortables Tool zur Verfügung, das als Proxy zwischen Browser und Server verwendet wird. So kann exakt gemessen werden, welche Komponenten wann und mit welchem Zeitaufwand geladen werden. Magento hilft bei der Optimierung mit einem Code-Profiler, der die Ausführungszeiten von einzelnen Codeblöcken anzeigt, und einem Datenbank-Profiler, der die gleiche Information für Datenbankabfragen liefert.

Caching ist die wirkungsvollste Strategie, um die Performance von Magento zu verbessern. Gleichzeitig erhöht Caching die Skalierbarkeit, da pro Benutzer weniger Requests anfallen, seltener Datenbankabfragen gemacht usw. Magento selbst hat eine sehr effektive Caching-Infrastruktur, die unter anderem Ergebnisse von Datenbankabfragen und Blöcke speichern kann. Durch eine gute Verwendung von Block-Caching wird die Ausführungszeit von Magento oft mehr als halbiert, wenn ein Cache-Treffer vorliegt. Whole Page Caching geht noch einen Schritt weiter und liefert direkt eine ganze vorgespeicherte Seite zurück. "

Inhaltsangabe

1;Inhalt;5 2;Einführung;9 2.1;Das Testsystem installieren;14 2.2;Die Entwicklungsumgebung einrichten;15 2.3;Eine Versionskontrolle nutzen;15 2.4;Magento Contributor Agreement;17 2.5;Magento Community Documentation;17 2.6;Magento Community Edition Roadmap;18 2.7;Literatur;19 2.8;Weblinks;19 3;Kapitel 1: Der erste Eindruck;21 3.1;Das Zend Framework;22 3.2;Granularer Aufbau durch Module;24 3.2.1;Die Modul-Programmlogik;25 3.2.2;Die Modul-Gestaltung;26 3.3;Die Verzeichnisstruktur von Magento;26 3.3.1;/app/code/;28 3.3.2;/app/design/;29 3.4;Das MVC-Pattern;31 3.4.1;M wie Model;31 3.4.2;V wie View;32 3.4.3;C wie Controller;33 3.5;Requestzyklus;35 3.5.1;Zusammenfassung;36 4;Kapitel 2: Eigene Extensions entwickeln;37 4.1;Eine Extension konfigurieren;38 4.1.1;Globale Konfiguration;39 4.1.2;Frontend-bezogene Konfiguration;40 4.2;Eine Extension in Magento aktivieren;43 4.3;Die Verzeichnisstruktur einer Extension;45 4.4;Praxisbeispiel 1: HelloWorld;46 4.4.1;Eine Extension anlegen und konfigurieren;47 4.4.2;Einen neuen Controller definieren;47 4.4.3;Layout;48 4.4.4;Template;49 4.5;Magento richtig erweitern;49 4.5.1;Rewrites;50 4.5.2;Event-Observer;53 4.5.3;Replacements;54 4.6;Praxisbeispiel 2: Eine Bestellbenachrichtigung per E-Mail verschicken;54 4.6.1;Die Extension konfigurieren;54 4.6.2;Den Observer anlegen;55 4.6.3;Eigene Backend-Konfigurationsoptionen;56 4.6.4;Installations- und Update-Skripte;59 4.7;Praxisbeispiel 3: Die Category-Entität erweitern;60 4.7.1;Eine Setup-Ressource in die config.xml eintragen;60 4.7.2;Ein Installationsskript anlegen;61 4.7.3;Zusammenfassung;63 5;Kapitel 3: Models und Resource-Models;65 5.1;Entity-Attribute-Value (EAV);66 5.1.1;Entitäten;66 5.1.2;Attribute, Attributsets und Attributtypen;66 5.1.3;Attributwerte;67 5.2;Datenbankstruktur;69 5.2.1;EAV-Tabellen;71 5.2.2;Tabellensets;74 5.3;Models;75 5.3.1;Abstrakte Model-Klassen und Vererbung;75 5.3.2;Der Ursprung des Magento-Model-Objekts;76 5.3.3;Die Modulfabrik von Magento;78 5.3.4;Der PHP include_path;78 5.3.5;Collections;79 5.3.6;Events;82 5.4;Resource-Model;82 5.4.1;Persistenz;83 5.5;Praxisbeispiel: Eine Extension zur Verwaltung von Rezepten;83 5.5.1;Router und Controller einrichten;84 5.5.2;Datenbanktabellen über ein Installationsskript erstellen;85 5.5.3;Das Model erstellen und einbinden;86 5.5.4;Das Resource-Model erstellen und einbinden;87 5.5.5;Das Model instantiieren;88 5.5.6;Collection-Klasse zum Auslesen der Rezeptdaten;89 5.5.7;Zusammenfassung;90 6;Kapitel 4: Das Magento-Frontend;93 6.1;Themes und Packages;94 6.1.1;CSS/JavaScript;96 6.2;Seiten aufbauen mit Blöcken;97 6.2.1;Inhaltsblöcke vs. Strukturblöcke;98 6.2.2;Blockklassen;100 6.3;Blöcke mit Templates formatieren;101 6.3.1;Blöcke und Templates;102 6.3.2;Einen neuen Block erzeugen;103 6.3.3;Blockanweisungen;103 6.4;Mit Layouts arbeiten;105 6.4.1;Update-Handles;111 6.4.2;Actions;113 6.4.3;Custom Layout Updates;115 6.5;Praxisbeispiel: Verschiedene Layout-Updates;116 6.5.1;Mini-Warenkorb verschieben;117 6.5.2;Blöcke entfernen;118 6.5.3;Blöcken weitere Informationen hinzufügen;119 6.5.4;Ändern der Blockklasse;120 6.5.5;Eigene Templates verwenden;121 6.5.6;Core-Templates durch eigene ersetzen;121 6.6;JavaScript und AJAX;122 6.6.1;AJAX-Controller;125 6.6.2;JS-Proxy;125 6.6.3;JavaScript debuggen mit Firebug;126 6.6.4;Zusammenfassung;128 7;Kapitel 5:Produkte und Kategorien;129 7.1;5.1 Eine vertikale Tree-Navigation erstellen;130 7.1.1;Problem;130 7.1.2;Lösung;130 7.1.3;Diskussion;131 7.2;5.2 Eine Standardansicht pro Kategorie setzen;133 7.2.1;Problem;133 7.2.2;Lösung;133 7.2.3;Diskussion;134 7.3;5.3 Produkte per AJAX einer Vergleichsliste hinzufügen;137 7.3.1;Problem;137 7.3.2;Lösung;137 7.3.3;Diskussion;137 7.4;5.4 Kundenpreise anlegen;143 7.4.1;Problem;143 7.4.2;Lösung;143 7.4.3;Diskussion;143 7.5;5.5 Ein Produkt mit einem Frontend-Widget darstellen;150 7.5.1;Problem;150 7.5.2;Lösung;150 7.5.3;Diskussion;150 8;Kapitel 6: Angebote und Bestellungen;157 8.1;6.0 Einführung;157 8.2;6.1 Bestelldaten anreichern;157 8.2.1;Problem;157 8.2.2;Lösung;157 8.2.3;Diskussion;157 8.3;6.2 Einen zusätzlichen Status für Bestellungen hinzufügen;159 8.3.1;Problem;159 8.3.2;Lösung;159 8.3.3;Diskussion;159 8.3.4;Siehe auch;164 8.4;6.3 Einen produktspezifischen Versandaufpreis festlegen;164 8.4.1;Problem;164 8.4.2;Lösung;164 8.4.3;Diskussion;164 8.4.4;Siehe auch;176 8.5;6.4 Das Admin-Panel um eigene Konfigurationsmöglichkeiten erweitern;176 8.5.1;Problem;176 8.5.2;Lösung;176 8.5.3;Diskussion;177 8.6;6.5 Nutzerrechte für neue Extensions anlegen;181 8.6.1;Problem;181 8.6.2;Lösung;181 8.6.3;Diskussion;181 8.7;6.6 Gratisartikel in den Warenkorb legen;183 8.7.1;Problem;183 8.7.2;Lösung;183 8.7.3;Diskussion;183 8.7.4;Siehe auch;186 8.8;6.7 Ein Bestellkommentarfeld einfügen;186 8.8.1;Problem;186 8.8.2;Lösung;186 8.8.3;Diskussion;186 8.8.4;Siehe auch;190 9;Kapitel 7:Systemintegration;191 9.1;7.0 Einführung;191 9.1.1;Austausch von Daten zwischen zwei Systemen;191 9.2;7.1 Produktbestände mit Drittsystemen synchronisieren;192 9.2.1;Problem;192 9.2.2;Lösung;192 9.2.3;Diskussion;192 9.3;7.2 Aufträge an ERP-Systeme exportieren;193 9.3.1;Problem;193 9.3.2;Lösung;193 9.3.3;Diskussion;193 9.3.4;Siehe auch;196 9.4;7.3 Highslide für Bilder und sonstige Medien nutzen;196 9.4.1;Problem;196 9.4.2;Lösung;197 9.4.3;Diskussion;197 9.5;7.4 Ein Importer-Modul erstellen;198 9.5.1;Problem;198 9.5.2;Lösung;198 9.5.3;Diskussion;198 9.6;7.5 Den Produktimport über ein Shell-Skript starten;205 9.6.1;Problem;205 9.6.2;Lösung;205 9.6.3;Diskussion;205 9.7;7.6 Bilder Produkten hinzufügen und löschen;206 9.7.1;Problem;206 9.7.2;Lösung;206 9.7.3;Diskussion;206 9.7.4;Siehe auch;207 9.8;7.7 Eine Liste von Bestellungen via SOAP auslesen;208 9.8.1;Problem;208 9.8.2;Lösung;208 9.8.3;Diskussion;208 9.8.4;Siehe auch;210 10;Kapitel 8:Performance und Skalierbarkeit;211 10.1;8.0 Einführung;211 10.1.1;Performance von Magento;212 10.1.2;Caching;213 10.2;8.1 Die Systemperformance mit Fiddler analysieren;214 10.2.1;Problem;214 10.2.2;Lösung;214 10.2.3;Diskussion;214 10.3;8.2 Einfache Lasttests mit ab2;216 10.3.1;Problem;216 10.3.2;Lösung;216 10.3.3;Diskussion;216 10.4;8.3 Mit Code-Profiling die Performance einzelner Funktionen messen;217 10.4.1;Problem;217 10.4.2;Lösung;217 10.4.3;Diskussion;217 10.5;8.4 Clientseitiges Caching für statische Daten optimieren;218 10.5.1;Problem;218 10.5.2;Lösung;219 10.5.3;Diskussion;219 10.6;8.5 Statische Daten mit dem Reverse-Proxy-Verfahren ausliefern;219 10.6.1;Problem;219 10.6.2;Lösung;220 10.6.3;Diskussion;220 10.7;8.6 Statische Daten durch Pipelining schneller ausliefern;222 10.7.1;Problem;222 10.7.2;Lösung;222 10.7.3;Diskussion;222 10.8;8.7 APC als Magento-Cache-Backend verwenden;223 10.8.1;Problem;223 10.8.2;Lösung;223 10.8.3;Diskussion;224 10.9;8.8 Eine Memcached-Caching-Infrastruktur in Magento integrieren;224 10.9.1;Problem;224 10.9.2;Lösung;224 10.9.3;Diskussion;224 10.9.4;Siehe auch;225 10.10;8.9 Seitenteile mithilfe von Block-Caching zwischenspeichern;225 10.10.1;Problem;225 10.10.2;Lösung;225 10.10.3;Diskussion;226 10.11;8.10 Ganzseitiges Caching mit nginx und Memcached;228 10.11.1;Problem;228 10.11.2;Lösung;228 10.11.3;Diskussion;228 11;Kapitel 9:Deployment;235 11.1;9.0 Einführung;235 11.1.1;Problem;239 11.1.2;Lösung;239 11.1.3;Diskussion;239 12;Kapitel 10:Bezahlung und Versand;243 12.1;10.0 Einführung;243 12.2;10.1 Tabellarische Versandkosten um eigene Regeln erweitern;243 12.2.1;Problem;243 12.2.2;Lösung;243 12.2.3;Diskussion;243 12.3;10.2 Ein Dummy-Versandmodul erstellen;251 12.3.1;Problem;251 12.3.2;Lösung;251 12.3.3;Diskussion;251 12.3.4;Siehe auch;256 12.4;10.3 Ein neues Bezahlmodul erstellen;256 12.4.1;Problem;256 12.4.2;Diskussion;256 12.4.3;Siehe auch;257 13;Kapitel 11:Das Admin-Panel erweitern;259 13.1;11.0 Einführung;259 13.2;11.1 Eine Lieferanten-Entity erstellen;259 13.2.1;Problem;259 13.2.2;Lösung;260 13.2.3;Diskussion;260 13.3;11.2 Eine Datentabelle über ein eigenes Admin-Grid bearbeiten;262 13.3.1;Problem;262 13.3.2;Lösung;262 13.3.3;Diskussion;262 13.4;11.3 Ein neues Admin-Grid aufbauen und gestalten;264 13.4.1;Problem;264 13.4.2;Lösung;264 13.4.3;Diskussion;264 13.5;11.4 Einen speziellen Renderer für ein Grid einbinden;268 13.5.1;Problem;268 13.5.2;Lösung;269 13.5.3;Diskussion;269 13.6;11.5 Einen neuen Eintrag in der Navigation des Admin-Panels anlegen;270 13.6.1;Problem;270 13.6.2;Lösung;270 13.6.3;Diskussion;270 13.7;11.6 Ein neues Produktattribut über ein Update-Skript anlegen;273 13.7.1;Problem;273 13.7.2;Lösung;273 13.7.3;Diskussion;273 13.8;11.7 Ein neues E-Mail-Template im Admin-Panel erstellen und pflegen;275 13.8.1;Problem;275 13.8.2;Lösung;275 13.8.3;Diskussion;275 13.9;11.8 Einen Cronjob in eine Extension integrieren;278 13.9.1;Problem;278 13.9.2;Lösung;278 13.9.3;Diskussion;278 13.9.4;Siehe auch;281 14;Anhang;283 14.1;Liste der Attributeigenschaften;283 14.2;Die Magento-Payment-API;287 14.2.1;Order-State und -Status;287 14.2.2;Payment-Method-Modelle;288 14.2.3;Anzeige der Zahlart als Option beim Checkout;289 14.2.4;Methoden und Eigenschaften der Magento-Payment-API;289 14.2.5;Payment-Model-Eigenschaften;290 14.2.6;Payment-Model-Methoden;291 14.2.7;Ablauf von Zahlungsvorgängen im Onepage-Checkout;294 15;Index;303