Hoe verbeter ik de performance van Magento?

Artikel aangemaakt: 10-04-2012 | Artikel gewijzigd: 22-05-2015

Onze Magento hosting is behoorlijk snel, maar uw website moet dan wel gebruik maken van de mogelijkheden die onze servers u bieden. Een snelle webshop is essentieel. Een langere laadtijd van uw website betekend tenslotte onnodig klant verlies.

  1. Memcache - De grootste verbetering kan worden behaald door het gebruik van Memcache.
  2. Sessies - Wanneer klanten pagina's openen worden er standaard  sessie bestanden geschreven in de map /var/session/ de aantallen bestanden kunnen oplopen tot soms 500.000+ bestanden. Hierdoor word de webserver traag, omdat deze bestanden worden gelezen bij het benaderen van deze directory. Wijzig het bestand app/etc/local.xml:
    • <session_save><![CDATA[files]]></session_save>
      naar:
      <session_save><![CDATA[memcache]]></session_save>
    • Wanneer u geen Memcache heeft op uw server of hosting kunt u ervoor kiezen om de sessies op te slaan in de database. Ook dit zorgt voor performance winst:
      <session_save><![CDATA[db]]></session_save>
  3. FileTag -  De server kan uw bestanden sneller vinden in de cache wanneer u uw htaccess bestand uitrust met het commando eTags. Voeg hiervoor de onderstaande regel toe in het .htaccess bestand in de root:
    • FileETag MTime Size
       
  4. Expire Headers - Wanneer bezoekers uw website voor de tweede keer bekijken is het nuttig dat bestanden die al een keer gedownload zijn niet nog eens worden gedownload, dit neemt namelijk flink wat extra tijd in beslag.
    • Plaats de regels code van dit bestand in het .htaccess bestand in de root van uw Magento installatie. Deze Expire Headers zorgen ervoor dat klanten minder hoeven te downloaden. Eventueel kunt u als alternatief de GTspeed module gebruiken. (het dubbel toepassen van Expire headers is niet nodig. U dient daarom een keuze te maken tussen deze oplossing en de Expire header opties die worden aangeboden in GTspeed.
       
  5. CSS en Javascript Merge - Wanneer uw website word geladen worden er allerlei bestanden gedownload. Een webserver heeft altijd een maximaal aantal bestanden wat kan worden geladen. Meestal is dit 5 tegelijk. Hoe minder bestanden u download, hoe sneller uw website daardoor word. Dit kan met CSS en Javascript al gauw oplopen tot seconden snelheids winst.
    • Installeer de module GTspeed. Deze gratis module voegt al uw Javascript en CSS bestanden samen waardoor uw website sneller word geladen. Let wel dat u na de installatie even moet uitloggen en inloggen. Direct daarna vindt u de opties van GTspeed in het menu onder "System" -> "GT" -> "GTspeed". Schakel alle opties in: "CSS Minification", "JavaScript Minification", "CSS combining", "JavaScript combining" en "Expires Headers" (enkel indien u niet op punt 4 heeft uitgevoerd).
       
  6. Optimaliseer uw afbeeldingen. Bestanden bestand voor een klein deel uit achterliggende informatie zoals 'de auteur', 'wanneer is het bestand gemaakt', 'wanneer is het bestand voor het laatst gewijzigd', etc. Al deze informatie lijkt niet veel, maar wanneer alle plaatjes op uw website deze extra informatie bevatten kan dit een redelijke performance winst opleveren. Uw klanten hoeven tenslotte minder te downloaden. De techniek waar dit mee kan heet "loss less compression" en kan zowel handmatig als automatisch worden uitgevoerd.
    1. Handmatig met SmushIT van Yahoo. Upload uw plaatjes en download deze weer. U ziet tijdens het comprimeren van de bestanden direct terug op de website hoeveel u heeft kunnen optimaliseren.
    2. Automatisch met de gratis GTspeed module voor Magento. Met deze module kunt u alle afbeeldingen op uw website in 1 keer optimaliseren.
       
  7. Flat Products Wanneer u catalogus veel producten bevat kan uw website sneller worden gemaakt door de pagina's met producten niet langer uit de database op te halen, maar uit de html cache. U kunt dit inschakelen vanuit de Magento Admin. Het is aan te raden deze optie enkel in te schakelen vanaf 1000 producten.
    • U vindt deze optie onder Systeem -> Catalogus -> Frontend -> "Gebruik platte catalogus producten = JA"
       
  8. Flat Categories - Uw website kan sneller worden gemaakt door de pagina's met producten niet langer uit de database op te halen, maar uit de html cache. U kunt dit inschakelen vanuit de Magento Admin.
    • U vindt deze optie onder Systeem -> Catalogus -> Frontend -> "Gebruik platte catalogus categorie = JA"
     
  9. Zend Full Page Cache - Het laden van pagina's kost kostbare tijd. Deze laadtijd bestaat deels uit het uitvoeren van database queries en het laden van bestanden. Deze kunnen beiden worden voorkomen door de Zend Full Page Cache in te schakelen.
    • U vindt deze optie onder Systeem -> Configuratie -> Onder de kop ‘geavanceerd’ -> optie ‘Systeem’.
    • Stel deze optie in met onderstaande instellingen:
      • Activeer External Cache              - Ja
      • Cookie Lifetime (seconden)      - 3600
      • Externe Cache Instellingen         - Zend full page cache.
         
  10. Compilation - Het Zend Framework waar Magento in is gebouwd bestaat uit letterlijk duizenden bestanden met nog veel meer classes. Deze kunnen met deze optimalisatie worden samengevoegd in één class. Het laden van de classes scheelt hierdoor behoorlijk wat tijd.
     
    • Belangrijk: gebruik dit nooit zonder te testen op je live omgeving.
    • Om deze functie te laten werken moeten de mappen /includes en /includes/srcschrijfbaar zijn (777).
       
    • U vindt de compilatie optie onder Systeem -> Tools -> Compilation.
    • Klik op de knop 'Run compilation process'. Na enkele minuten is de compilatie geactiveerd.
       
    • Zodra je modules installeert/upgrade via Magento Connect of handmatig wijzigingen aan code uitvoert dien je de compilatie eerst uit te schakelen, omdat anders worden de gewijzigde bestanden niet door de installatie gebruikt.
       
  11. Logs korter bewaren - Uw website bewaart standaard logs in de database. Aangezien we uiteraard veel verkeer verwachten kan het aantal records behoorlijk oplopen tot enkele GB's database ruimte. Het regelmatig (automatisch) opruimen van deze logs en het korter bewaren kan al snel een leuke snelheidswinst opleveren.
     
    Op uw productie omgeving is het sterk af te raden om logs voor langere tijd te bewaren!
     
    Allereerst dient u de Magento cron in te stellen. Deze cron is verantwoordelijk voor alle automatische bewerkingen die Magento kan uitvoeren. In dit geval het opschonen van de logs.

    Stel een crontab in die om de 5 minuten draait voor het bestand http://uwwebsite.nl/cron.php. Wanneer u SATserver gebruikt kunt u de cron instellen door in te loggen op www.satserver.nl en daarna onder de tab 'Geavanceerd' te kiezen voor de functie 'Crontab'.

    De instellingen van de cron
    • Naam: kies hier een passende naam zoals "Magento Main Cron".
    • URL: cron.php
    • De gebruikersnaam en wachtwoord velden kunt u leeg laten.
    • Minuut: */5
    • Uur: *
    • Dag van de maand: *
    • Maand: *
    • Dag van de week: *
    • Aan/Uit: Aan
    • Klik na het instellen van de opties op de knop 'Toevoegen'.
     
    Daarna kunt u uw Magento installatie correct instellen:
    • Log in op de admin
    • U vindt de logfile opties onder Systeem -> Configuratie -> Systeem (links onderin) -> Log opschonen. Gebruik onderstaande instellingen.
    • Bewaar log, dagen: 15
    • Log opschonen inschakelen: Ja
    • Starttijd: 00 00 00 (dit gebeurd 's nachts om de server overdag te ontlasten).
    • Frequentie: Dagelijks
    • Overige instellingen kunt u naar wens invoeren, maar mogen ook leeg gelaten worden.
     
    Wanneer u geen gebruik maakt van de Systeemlogs raden wij aan deze uit te schakelen.
    • Systeem -> Configuratie -> Ontwikkelaar (links onderaan) -> Log-instellingen -> Schakel de logging uit en sla de configuratie op.
       
  12. Opschonen directories - Magento bewaard standaard veel informatie over fouten in mappen zoals var/log en var/report. De hoeveelheid data in deze mappen vertraagd Magento nodeloos. Zorg er daarom voor dat je deze mappen regelmatig leegt..
Afzender:
Ontvanger: