Magento is een verbluffend krachtig e-commerceplatform. In deze miniserie leren we hoe je aan de slag kunt met het platform, de terminologieën leert kennen, een winkel en alle gerelateerde aspecten ervan kunt opzetten en uiteindelijk leren hoe je het kunt aanpassen om het ons eigen te maken..
In dit laatste deel zullen we een van de grootste klachten behandelen die mensen hebben met Magento: de prestaties. We zullen een aantal verschillende methoden bekijken die u zou kunnen toepassen om het platform aanzienlijk te verbeteren. Opgewonden? Laten we beginnen!
In de laatste paar delen hebben we op hoog niveau bekeken hoe Magento-thema's worden samengesteld, de componenten die het genereren en hoe alles samenwerkt om een werkthema te creëren, samen met een vluchtige blik op een aantal API-methoden die Magento blootlegt. We hebben ook een gefocuste, stapsgewijze blik geworpen op wat Magento multi store is, hoe het je kan helpen en tot slot hoe alles in te stellen.
Magento's prestaties zijn een gebied waarover gebruikers consistent klagen. Niet veel is waar, maar er zijn natuurlijk talloze manieren om de prestaties te verbeteren. Vandaag zullen we manieren bekijken om de prestaties van uw Magento-installatie drastisch te verbeteren. Ik weet dat het interessant klinkt en dat het jeukt om aan de slag te gaan.
Snelle opmerking voordat we beginnen. De meeste tweaks en / of optimalisaties die hier worden genoemd, zijn alleen die: vermeldingen. Je zou waarschijnlijk moeten googlen voor de implementatie omdat de implementatie zelf een redelijk grote tutorial op zich vereist. Met dat uit de weg, laten we beginnen!
Dit is het meest kritische aspect van uw Magento-installatie. Magento kan op een gedeelde host worden uitgevoerd, maar pas op, de prestaties zullen niet optimaal zijn. Magento vereist echt meer kracht dan een doorsnee shared host kan bieden en het zal echt laten zien wanneer je het op één draait.
Een VPS of een dedicated server is het meest ideaal als het om Magento gaat. En vergeet niet om niet te beknibbelen op het geheugen, want je zult het nodig hebben. Veel ervan.
Door Magento enige delen van zijn codebasis in de cache te laten opslaan, is dit een van de weinige dingen die u moet doen als u begint met het optimaliseren van een installatie. U hoeft caching niet voor alles in te schakelen, maar ik zou lay-outs voorstellen en HTML-uitvoer blokkeren als essentieel. Met deze caching ingeschakeld, afhankelijk van de grootte van de site, kunt u verwachten dat uw laadtijd drastisch wordt verlaagd.
Houd er rekening mee dat caching tijdens de ontwikkeling moet worden uitgeschakeld. Als u wijzigingen in uw code aanbrengt en deze niet weerspiegelt in de frontend, is caching de boosdoener. Zo'n voor de hand liggend punt, maar het is de oorzaak geweest van zoveel haartrekken tijdens de ontwikkeling.
Nadat u caching heeft ingeschakeld, kunt u nu een stap verder gaan. Magento cacheert informatie met behulp van een op bestanden gebaseerd opslagsysteem. Hoewel dit de meest betrouwbare manier is, zijn er vaak momenten waarop je pure snelheid wilt. In deze gevallen zou u moeten kijken naar de inzet van een op geheugen gebaseerd cachingsysteem.
Er zijn een aantal opties beschikbaar en mensen hebben veel succes met hen gehad. eAccelerator is tegenwoordig mijn favoriete gereedschap. Vergeet niet om het te configureren met voldoende geheugen of mogelijk moet het gegevens opschonen tijdens de meest ongelegen momenten.
Als je een VPS of een dedicated server hebt, kijk dan naar het uitschakelen van niet-essentiële PHP-extensies. Magento heeft slechts een handvol zoals PDO_MySQL nodig, dus voel je vrij om de overbodige uit te schakelen.
Bovendien zijn er twee aanpassingen die zullen resulteren in betere prestaties.
Standaard is PHP geconfigureerd om een absurd lage hoeveelheid geheugen te gebruiken. U moet dit verhogen. U kunt dit doen door de volgende regel toe te voegen aan het configuratiebestand:
php_value memory_limit 512M
De tweede is door de realpath_cache waarde voor zo.
realpath_cache_size = 1M realpath_cache_ttl = 86400
Dit is meer een algemeen onderwerp dan een specifieke Magento, dus ik zal het kort houden hier. Er zijn een aantal Apache-modules die je moet inschakelen en / of instellen om de prestaties van je winkel te verbeteren.
De eerste is mod_deflate. Hierdoor kan de uitvoer van de server drastisch worden gecomprimeerd, wat leidt tot betere prestaties. Absoluut een module die moet worden ingeschakeld.
Ten tweede, kijk in mod_expires. Met deze module kan de browser specifieke bronnen opslaan gedurende een bepaalde periode zodat terugkerende bezoekers een snellere ervaring hebben.
En tenslotte, keepalives. Dit maakt permanente verbindingen mogelijk door sessies met een lange levensduur te creëren waardoor meerdere aanvragen via dezelfde TCP-verbinding kunnen worden gerouteerd. Dit helpt als u een aantal kleine items op uw pagina heeft.
Vergeet niet om periodiek uw indexen voor de tabellen opnieuw op te bouwen via de achterkant. Dit is een essentieel punt dat zal resulteren in een merkbare prestatieverbetering voor uw winkel.
Houd er rekening mee dat het opnieuw opbouwen van de indexen een zeer kostbare aangelegenheid is, wat betreft middelen en dat dit buiten kantooruren moet worden gedaan. Als u dit doet tijdens zelfs gematigde activiteiten in uw winkel, zal dit de prestaties en het reactievermogen van de winkel aanzienlijk verslechteren.
De PHP-interpreter moet elk bestand van de schijf lezen en het compileren op elk verzoek, iets dat extreem veel CPU-bestanden bevat als je kijkt naar de enorme omvang van Magento. In dit geval wordt een PHP-versneller zoals APC of eAccelerator sterk aanbevolen.
Zulke tools verhogen de prestaties van je PHP-code aanzienlijk door je code in cache-by-byte-code op te slaan en wordt geserveerd in plaats van dat je de tolk moet vragen deze elke keer te compileren.
Dit is een uitbreiding van het hierboven genoemde punt. Magento bewaart veel informatie [niet alleen de database] op de harde schijf van de server, die, zoals je weet, de langzaamste schakel in de keten is. Dit omvat caches, sessie-informatie, enzovoort. Als u de prestaties op dit gebied wilt verbeteren, kunt u het beste een geheugen gebaseerd bestandssysteem implementeren om ervoor te zorgen dat al die gegevens in het geheugen worden opgeslagen in plaats van kostbare oproepen naar de harde schijf..
Omdat we hier niet de ruimte hebben, wijs ik je gewoon in de goede richting. Wat je moet doen is een tmpfs-partitie instellen die zorgt voor je sessie- en cachemaps. Deze zijn te vinden onder /var/www/domain.com/var/sessions/ en /var/www/domain.com/var/cache/ respectievelijk.
De platte catalogusmodule aan de voorkant maakt extra databasetabellen om gegevens in een vlak / lineair formaat op te slaan. Deze module is beschikbaar voor zowel categorie- als productgegevens, dus voel je vrij om deze onafhankelijk in te schakelen, zoals vereist door je use case.
Het inschakelen van deze module wordt alleen aanbevolen voor grote winkels. Winkels met een kleine catalogus moeten absoluut wegblijven, omdat het mogelijk is dat dit niet voldoende prestatieverbeteringen oplevert om gebruik te rechtvaardigen en de prestaties zelfs kan verminderen. Maak hier een weloverwogen beslissing.
De achterkant van Magento is aanzienlijk duurder dan de voorkant omdat het veel meer informatie moet verwerken. En zodra uw winkel een bepaalde drempel heeft bereikt met betrekking tot het aantal producten, zeg 5.000, wordt de server echt belast.
Het hebben van een speciale beheerdersserver kan ertoe bijdragen dat het beheerderspaneel de CPU-cycli krijgt die het nodig heeft met een nadelig effect op de prestaties van de rest van de site.
Het standaard Magento-thema is een geweldige plek om mee te beginnen, maar is niet echt het meest efficiënt. Laat me het uitwerken. Het standaardthema is ontworpen om alle functies van Magento te tonen en bundelt zo vanzelfsprekend elke whizbang-functie. Onthoud dat Magento een pagina opbouwt door de lay-out die we specificeren te parseren en dus is de paginageneratietijd direct gerelateerd aan het aantal blokken dat u op een pagina gebruikt.
Dus wanneer u uw eigen thema bouwt, vermijd onnodig complexe lay-outs, vereenvoudig en / of combineer de kleinere blokken om de CPU-cycli te verminderen die nodig zijn om de code van de pagina weer te geven.
Magento heeft een elegant systeem om programmatisch stylesheets en JavaScript-bestanden binnen thema's op te nemen / uit te sluiten. Veel auteurs van het thema lijken dit systeem volledig te omzeilen door deze elementen handmatig op te nemen in de HTML-template. Dit is fout.
De juiste manier om deze activa op te nemen, wordt hieronder weergegeven:
Door de bovenstaande code in de lay-outbestanden te gebruiken, combineert Magento de JS-bestanden tot één bestand en wordt deze in één verzoek aan de browser aangeboden.
De regels voor het optimaliseren van normale sites of applicaties zijn hier ook van toepassing. Browsers beperken doorgaans het aantal downloads van een domein tot 2-5, wat zeer beperkend is wanneer u een media rijk thema met een aantal kleine items laadt. Er zijn een aantal eenvoudige manieren om dit te doen
De eerste en gemakkelijkste is iets waar je allemaal bekend mee bent: sprites. Met behulp van sprites kunt u het aantal gelijktijdige verzoeken minimaliseren dat door uw thema wordt gegenereerd.
Deze aanpak werkt mogelijk niet in alle gevallen. Wat als je thema een heleboel handige scripts, video's en whatnots heeft? Deze mogen het laden van de rest van de pagina niet blokkeren. Maak in deze gevallen gewoon een subdomein voor statische activa en wijs uw Magento-installatie naar de resource.
Loggen is essentieel, maar het is ook duur omdat het naar de schijf moet schrijven. Magento is over het algemeen erg spraakzaam als het gaat om loggen en je zult al snel knielen in logbestanden waarvan je de meeste niet nodig hebt.
De oplossing hier is om alles behalve de essentiële onderdelen uit te schakelen. Heeft u ingeschakeld dat langzame zoekopdrachten op uw productieserver zijn vastgelegd? Zet het uit, nu meteen! Langzame query's moeten worden onderzocht en vastgesteld ruim voor de implementatie. Het heeft zijn plaats in een ontwikkelserver, niet in een productieserver.
Dit is een andere essentiële tip die veel mensen blijven vergeten. Of het nu gaat om de versie van PHP, MySQL of Magento zelf, de nieuwere versies brengen aanzienlijke snelheid en stabiliteit met zich mee die u zich niet kunt veroorloven.
Speciaal in het geval van Magento lost zelfs elke mini-update een aantal prestatieproblemen en bugfixes op, zolang de branch stabiel is, upgrade!
Magento heeft een handige compiler-module die ergens tussen een 25% -50% versnelling belooft. Zoals de naam al doet vermoeden, compileert deze module alle Magento-bestanden en leidt zo tot betere prestaties.
Merk op dat deze module nog steeds in bèta is en alleen 1.3x-builds ondersteunt. Dit zou binnenkort klaar moeten zijn dus houd hier ook rekening mee.
Fooman Speedster is een krachtige uitbreiding die je winkel een mooie boost in prestaties kan geven. Het werkt door uw JavaScript- en CSS-bestanden te combineren, verkleinen, comprimeren en cachen. Daarbovenop maakt het ook GZIP-compressie mogelijk voor de rest van de winkel.
Al met al betekent dit dat er minder gegevens worden verzonden en minder aanvragen, wat een netto winst is zoals jij het ziet. Het werkt met alle belangrijke versies van Magento en is absoluut een must voor elke winkel.
Een andere van die dingen die u periodiek moet doen om de prestaties te verbeteren. U moet uw database zo nodig repareren en vervolgens optimaliseren. Je kunt het doen via je hosts CPanel, phpMyAdmin of alleen shell-commando's. Hier is een snelle link die u door het proces leidt met behulp van phpMyAdmin.
En we zijn klaar! Vandaag hebben we een aantal manieren bekeken om de prestaties van Magento te verbeteren. Hopelijk was dit nuttig voor jou en je vond het interessant. Ik weet zeker dat ik hier een aantal punten heb gemist dus voel je alsjeblieft vrij om de opmerkingen in te vullen met de tips die je hebt gebruikt.
Vragen? Leuke dingen om te zeggen? Kritiek? Klik op het gedeelte Opmerkingen en laat een opmerking achter. Happy codering!