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=
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