Magento Performance – von der Standard-Installation zum performanten Shop
Niels Pahlmann, TUDOCK GmbH
DARUM PERFORMANCE !
Die quantitative Zusammensetzung der Ladezeit-Bestandteile ist in jeder Anwendung individuell.
LADEZEITEN
S
V
Ü
D
ZIELE SIND MESSBAR
Was soll schneller werden?
Um wie viel soll es schneller werden?
EASY WINS
Enable Expire Headers
<IfModule mod_expires.c>
ExpiresActive On
</IfModule>
APC Cache Backend
<global>
<cache>
<backend>apc</backend>
<prefix>MAGE_</prefix>
</cache>
</global>
MySQL query caching
query_cache_type=1
query_cache_size=64M
SSL-Handshake
Ü
S
S
V
MAGENTO-CACHE
INDIZIERUNG
Alle Caches sind
AKTIVIERT
Alle Indizierungen sind
FERTIG/AKTUELL
S
S
QUELLTEXT-QUALITÄT
PHP Code Sniffer
//Performance Issue!!!
foreach ($this->getProductIds() as $productId) {
$product = Mage::getModel(‘catalog/product’)->load($productId);
$this->processProduct($product);
}
//So geht's!
$collection = Mage::getResourceModel(‘catalog/product_collection’)
->addFieldToFilter(‘entity_id’, array($this->getProductIds()))
->addAttributeToSelect(array(‘name’));
foreach ($collection as $product) {
$this->processProduct($product);
}
S
PERFORMANTES MARKUP
- Valides Markup erstellen
- Skripte und Marketing-Tags nach dom:loaded
- Performance vor Tracking
- Höhen und Breitenangaben bei <img>-Tags
D
Ü
Ü
D
MAGENTO-UPDATE
S
BLOCK CACHING
class Tudock_Cora_Block_Catalog_Product_List extends Mage_Catalog_Block_Product_List {
protected function _construct() {
/** @var $helper Tudock_Cora_Helper_Cache */
$helper = Mage::helper('cora/cache');
if ($helper->canCache()) {
$this->addData(array(
'cache_lifetime' => 86400,
'cache_tags' => array(Mage_Catalog_Model_Product::CACHE_TAG),
'cache_key' => $helper->getCategoryCacheKey('Product_List'),
));
}
parent::_construct();
}
S
FUNKTIONALITÄT REDUZIEREN
- Sind personalisierte Funktionen wie z.B. zuletzt angesehene Produkte nötig?
- Nicht gecachte Produktlisten kosten Geschwindigkeit.
- Die Datenbank erleichtern:
- URL Rewrites
- Logging
- Warenkörbe
S
S
S
STATISCHE DATEIEN UND HTTP-REQUESTS
-
Minifying (CSS, JS)
- Statische Dateien auf Medien Server (CDN) lagern
- Lazy Loading von Bildern
- Reduzierung von HTTP-Request, bspw. Sprite-Graphiken einsetzen
Ü
S
Ü
Ü
ASYNCHRONE DATENÜBERTRAGUNG
S
VARNISH FULL PAGE CACHE
S
- Wird vor dem HTTP-Server installiert
- Daten werden im Arbeitsspeicher abgelegt
- Stark Thread-basiert
- VCL
- Invalidierung statt Löschen
ESI INCLUDE
S
<esi:include src=„user.php“ onerror="continue"/>
VARNISH + MAGENTO
S
LAYOUT BLOCKS
S
HERAUSFORDERUNGEN
S
HERAUSFORDERUNGEN
S
MOBILE FIRST
<picture>
<source media="(min-width: 64em)" src="high-res.jpg">
<source media="(min-width: 37.5em)" src="med-res.jpg">
<source src="low-res.jpg">
<img src="fallback.jpg" alt="This picture loads on non-supporting browsers.">
<p>Accessible text.</p>
</picture>
Besondere Herausforderung Responsive Web Design
Ü
PROJEKT PERFORMANCE-VERBESSERUNG
- Performance-Verbesserung als Projekt
- Ziele vereinbaren und Performance messen
- von Anfang an performant programmieren
- Kosten-Nutzen-Analyse
- gefühlte Performance beachten
- "Mobile First"
Performance
By TUDOCK GmbH
Performance
- 1,133