Logo
e-commerce-services_speed

Magento snelheid verbeteren

De snelheid van een Magento webshop is afhankelijk van veel factoren. Het aantal bezoekers, de kwaliteit van gebruikte modules, het aantal storeviews en de hoeveelheid producten bijvoorbeeld. Magento 1 staat bekend als traag, Magento 2 is al iets sneller. In de praktijk ervaren wij dat performance, zeker bij een succesvolle webshop, altijd een aandachtspunt blijft. Met de juiste optimalisaties, implementatiekeuzen en inspanningen kan iedere Magento webshop razendsnel worden.

Machiel Kreiken
Tim Hofman
Even sparren? 071 - 744 0084

Hostingconfiguratie

De keuze tussen shared hosting, een virtual private server (VPS) of dedicated hosting speelt in het begintraject van de ontwikkeling van een webshop al een belangrijke rol. Wanneer er voor een dedicated hostingomgeving wordt gekozen, dan is Varnish een mogelijke optie. Wordt er gekozen voor een shared hostingomgeving, dan vallen Redis en Memcached onder de meest significante opties. Belangrijk in de overweging is ook de kennis en ervaring van de hostingpartij; is er geen of weinig specialistische kennis aanwezig met betrekking tot de optimalisatie van Magento, dan is hosten bij deze partij geen optie.

Memcache

Memcached is een serveroptimalisatie in de vorm van het opslaan van cache in, en het serveren van cache, uit het werkgeheugen van de server. Het is bedoeld om de database te ontlasten. Caches bestaan uit database-request en API calls. Afhankelijk van het aantal cachehits kan Reach Digital met het inzetten van Memcache de laadtijden van uw Magento webshop met ongeveer 15% tot 20% reduceren.

Mod_pagespeed

Mod pagespeed is een serie filters op serverniveau die de Magento webshop laadtijd optimaliseert door de implementatie van frontend-gerelateerde best practices. Voorbeelden zijn onder andere het samenvoegen van CSS, het samenvoegen van Javascript bestanden en het automatisch resizen van afbeeldingen naar in de broncode gedefinieerde afmetingen. Deze laatstgenoemde voorkomt bijvoorbeeld dat afbeeldingen op onnodig grote resolutie worden ingeladen. Reach Digital kan met het inzetten van Mod_pagespeed een performancewinst behalen van 10%.

Redis

Memcached is een serveroptimalisatie in de vorm van het opslaan van cache in, en het serveren van cache, naar de harde schijf van de server. Net als Memcached is het bedoeld om de database te ontlasten, met als belangrijkste verschil dat Redis persistant is. Met andere woorden; caches blijven beschikbaar als de server of database wegvalt. Afhankelijk van het aantal cachehits kan Reach Digital met het inzetten van Redis de laadtijden van een (langzame) webshop met ongeveer 25% reduceren.

Varnish

Varnish is een reverse proxy. Een reverse proxy slaat het resultaat van een door bezoeker A bekeken pagina op en serveert deze aan alle volgende bezoekers, zonder hierbij opnieuw Magento te initialiseren. Het inzetten van Varnish kan de performance van een Magento-webshop significant verbeteren; Reach Digital heeft varnishimplementaties gedaan waarbij pagina-laadtijden werden teruggebracht naar 100ms. Net als bij full page cache modules bestaat ook bij de implementatie van Varnish het probleem van bezoeker (sessie) specifieke informatie. Varnish biedt hiervoor een oplossing in de vorm van Edge Side Includes (Varnish ESI). Met Edge side includes wordt alleen voor persoonlijke, sessie specifieke informatie - zoals de inhoud van de winkelwagen - Magento geraadpleegd. De cache - net als bij full page caching een platte versie van de hele pagina - wordt verrijkt met deze informatie en aan de bezoeker geserveerd.

Magento full page cache

Full page caching is standaard functionaliteit van Magento 2 en met behulp van verschillende modules te realiseren voor Magento 1. Bijvoorbeeld Zoom Full-Page Cache (Ezapps_Zoom), Aitoc Magento Booster, Lesti FPC (full page cache) of de Mirasvit Full Page Cache. De wijze waarop full page cache werkt is als volgt: wanneer een bezoeker een pagina bezoekt, wordt het resultaat van deze request opgeslagen als plat (html) bestand. Bij het eerstvolgende bezoek van deze pagina wordt Magento niet volledig geïnitialiseerd, maar wordt direct deze platte pagina geserveerd. Sessie specifieke informatie zoals de inhoud van de winkelwagen wordt via javascript (asynchroon, dus iets later) ingeladen.

Full page cache is een oplossing die een snelle webshop nog sneller maakt. We zien verbeteringen in TTFB (time to first byte) van 1,5 seconde naar 400 milliseconde. Een groot verschil als Magento traag voelt. De implementatie is door de aandacht die gestoken moet worden in de dynamisch ingeladen blokken op de pagina gemiddeld complex. In het geval van problemen met performance is full page cache geen oplossing.

Querycaching

Magento is een applicatie met database en voert veel database lees- en schrijf acties uit. Veel van deze queries zijn echter identiek, zoals bijvoorbeeld het ophalen van productcollecties of pagination-counts. Door deze databasequeries te cachen op databaseniveau, kan een snelheidswinst van zo'n 15% behaald worden. Databaseperformance is echter vrijwel nooit de bottleneck wanneer Magento als langzaam wordt ervaren.

Optimalisatie van indexeringen

Een vitaal proces binnen Magento is het vernieuwen van indexeringen. Ontstaat er een foutmelding bij het indexeren, dan kan het zijn dat producten van de webshop verdwijnen, filters ontbreken, categorieën verdwijnen, de zoekfunctie geen resultaat geeft of de voorraadstatusen niet meer kloppen. In een enkel geval komt het voor dat het indexeren lang duurt of blijft hangen. Omdat indexeringen een proces is dat door PHP wordt uitgevoerd, wordt de CPU van de server belast. Hoewel dit een backendproces is, kan een zwaar belaste CPU Magento traag maken, wat merkbaar is voor bezoekers. Reach Digital optimaliseert indexeringen door fouten in de techniek op te sporen en op zoek te gaan naar eventuele databasecorrupties. In sommige gevallen - bijvoorbeeld wanneer de productcatalogus meer dan 100.000 artikelen bevat - is het nodig om de intern ontwikkelde partial reindexer (gedeeltelijke indexeringen) in te zetten, of vervangende indexers in te zetten (zoals Ecomdev_URLRewrite). Indexeringen worden dan niet in hun volledigheid, maar slechts voor een deel vernieuwd.

Optimaliseren van import- en datasynchronisatieprocessen

Veel Magento webshops importeren periodiek productdata aangeleverd door een leverancier of synchroniseren voorraadinformatie met een extern ERP systeem. Er zijn verschillende implementatietechnieken om imports te realiseren, zoals Mage::getModel, Dataflow, ImportExport, FastSimpleImport of uRapidFlow. De keuze in importtechniek is veelal bepalend voor de maximaal haalbare snelheid. Net als indexeringen, is het importeren van productdata een proces dat door PHP wordt uitgevoerd. Met het importeren van data wordt dus de CPU van de server belast. Hoewel dit een backendproces is, kan een zwaar belaste CPU een trage webshopervaring voor de bezoekers als gevolg hebben. Reach Digital optimaliseert importprocessen door een analyse van de techniek en eventuele fouten in te importeren data te corrigeren. Dit verhelpt dat Magento traag is. Winst kan in veel gevallen behaald worden door het niet of anders importeren van attributen, attribuutgroepen en producttypen. In een enkel geval - bijvoorbeeld wanneer kwaliteit van de import te wensen over laat en de webshop door foutieve import niet functioneert - wordt geadviseerd om de import te herbouwen. Reach Digital werkt in dat geval volgens haar intern ontwikkelde en opensource importmethodiek ReachDigital_Import.

Werkwijze snelheid optimalisatie

Queryanalyse

Een analyse van de frontend, waarbij wordt gekeken naar het aantal databasequeries en de duur van databasequeries. Veelgebruikte modules, zoals Amasty Shopby, Manadev Layered Navigation of Aitoc Shop by Brands staan erom bekend dat ze in bepaalde scenario's databasequeries kunnen doen die lang duren of blijven hangen. Ook maatwerkfunctionaliteit, waarbij queries tabellen samenvoegen of counts ophalen, kunnen hetzelfde probleem kennen. Vaak kan door een kleine wijziging in techniek het probleem opgelost worden.

Templateanalyse

Door de frontend in techniek te analyseren, kan foutief geïmplementeerde functionaliteit worden opgespoord. Veel gemaakte fouten die voor lange laadtijden van pagina's kunnen zorgen zijn bijvoorbeeld het modificeren van productcollecties op templateniveau, het inladen van externe scripts of het inladen van trackingpixels. Het uitschakelen of anders implementeren van deze functionaliteit lost in veel gevallen hangende pagina's op.

Frontendoptimalisatie

Het samenvoegen en minify-en van javascript-bestanden en css-bestanden, gzip compressie van php, instellen van cacheheaders, optimaliseren van javascripts, verwijderen van 404-calls, gebruik van een content delivery network, asynchroon inladen van likebuttons en social media streams, gebruiken van mod_pagespeed en het blockcachen van blokken op de pagina; met deze en andere frontendoptimalisaties zorgt Reach Digital voor een extra snelle, 'snappy' paginaopbouw.

Performance vergelijking op testomgeving

Een kloon van uw webshop wordt verhuisd naar een testomgeving op één van onze servers. Door een combinatie van de meest geschikte caching- en serveroptimalisatietechnieken knijpen we de maximale snelheid uit de webshop. Bevalt onze hostingomgeving, dan helpen we u graag met de volledige verhuizing.

Technologie en partners waar we graag mee (samen)werken

xCoreGithubHygraphAmastyHypernodeSavviiBootstrapCampaign MonitorMailChimpGoogle ShoppingVarnish SoftwareGoogle AnalyticsMicrosoft Dynamics 365PaazlOracle NetSuite

Magento snelheid optimaliseren? Magento erg traag?