Magento är en otroligt kraftfull e-handelsplattform. I dessa miniserier lär vi oss hur vi ska komma igång med plattformen, lära känna terminologierna, skapa en butik och alla relaterade aspekter av det och äntligen lära oss hur vi anpassar det för att göra det till vårt eget.
I den här sista delen kommer vi att ta itu med en av de största klagomål som människor har med Magento: dess prestanda. Vi granskar ett antal olika metoder du kan använda för att öka plattformen väsentligt. Upphetsad? Låt oss börja!
I de senaste delarna tog vi en hög nivå på hur Magento-teman sätts samman, komponenterna som driver den och hur allt fungerar tillsammans för att skapa ett fungerande tema tillsammans med en kortfattad titt på ett antal API-metoder som Magento exponerar. Vi tog också en fokuserad steg för steg titta på vad Magento multi store är, hur det kan hjälpa dig och äntligen hur du ställer upp det hela.
Magento prestanda är ett område kring vilka användare klagar konsekvent. Inte mycket är det sant men det finns en mängd olika sätt att förbättra prestanda, förstås. Idag ska vi titta på sätt att drastiskt förbättra prestanda för din Magento-installation. Jag vet att det låter intressant och du kliar för att komma igång.
Snabb anteckning innan vi börjar men. Majoriteten av de tweaks och / eller optimeringar som nämns här kommer bara att vara de som nämns. Du borde noga google runt för genomförandet eftersom implementeringen i sig kommer att kräva en relativt stor handledning i sig. Med det ur vägen, låt oss börja!
Detta är den viktigaste delen av din Magento-installation. Magento kan köras på en gemensam värd men akta, prestationen kommer inte att vara optimal. Magento kräver verkligen mer kraft än en körning av bruket som delad värd kan ge, och det kommer verkligen att visa när du får det att springa på en.
En VPS eller en dedikerad server är mest idealisk när det gäller Magento. Och kom ihåg att inte skimp på minnet eftersom du behöver det. Massor av det.
Att låta Magento cache några delar av kodbasen är ett av de få saker du bör göra när du börjar optimera en installation. Du behöver inte aktivera caching för allt, men jag föreslår layouter och blockera HTML-utdata som nödvändiga. Med den här cachningen aktiverad kan du beräkna att belastningstiden minskas drastiskt beroende på platsens storlek.
Tänk på att du måste avaktivera caching under utveckling. Om du ändrar din kod och det inte speglar i fronten, är caching den skyldige. En sådan uppenbar punkt men det har varit orsaken till att så mycket hår drar under utveckling.
När du har aktiverat caching kan du nu ta det ett steg längre. Magento caches information med ett filbaserat lagringssystem. Även om detta är det mest tillförlitliga sättet, finns det ofta gånger när du vill ha snabb hastighet. I dessa fall bör du undersöka hur ett minnesbaserat cachningssystem används.
Det finns ett antal alternativ tillgängliga och människor har haft stor framgång med dem. eAccelerator är mitt val av val idag. Kom bara ihåg att konfigurera det med tillräckligt minne eller det kan behöva rena data under de mest oupphörliga stunderna.
Om du är på en VPS eller en dedikerad server ska du titta på inaktivera icke-väsentliga PHP-tillägg. Magento behöver bara en handfull som PDO_MySQL så gärna avaktivera de utomstående.
Dessutom finns det 2 tweaks som kommer att resultera i bättre prestanda.
Som standard är PHP konfigurerat för att använda en absurd liten mängd minne. Du måste öka detta. Du kan göra detta genom att lägga till följande rad i config-filen:
php_value memory_limit 512M
Den andra är genom att finjustera realpath_cache värde till så.
realpath_cache_size = 1M realpath_cache_ttl = 86400
Det här är mer av ett allmänt ämne än en Magento-specifik, så jag kommer att vara kortfattad här. Det finns ett antal Apache-moduler som du måste aktivera och / eller konfigurera för att förbättra prestanda i din butik.
Den första är mod_deflate. Detta gör att utsignalen från servern kan komprimeras drastiskt, vilket leder till bättre prestanda. Definitivt en modul som måste aktiveras.
För det andra, titta på mod_expires. Den här modulen låter webbläsaren cache specifika resurser under en viss tidsperiod, så återkommande besökare kommer att få en mer snyggare upplevelse.
Och slutligen, keepalive. Detta möjliggör förhängande anslutningar genom att skapa långlivade sessioner som gör att flera förfrågningar kan dirigeras via samma TCP-anslutning. Detta hjälper när du har ett antal små tillgångar på din sida.
Kom ihåg att återuppbygga dina index för tabellerna via bakre änden regelbundet. Detta är en viktig punkt som kommer att resultera i en märkbar prestationsökning till din butik.
Tänk på att ombyggnaden av indexen är en väldigt dyr affär, resursvis och bör göras under öppettider. Om du gör detta under jämn måttlig aktivitet i din butik kommer det att försämra butikens prestanda och lyhördhet avsevärt.
PHP tolk måste läsa varje fil från disken och kompilera den på varje förfrågan, något som är extremt CPU-hungrig om du anser att Magento-storleken är stor. I så fall rekommenderas en PHP-accelerator som APC eller eAccelerator starkt.
Verktyg som dessa ökar prestandan av din PHP-kod avsevärt genom att cacha din kod i mellannivåkoden och serveras istället för att be tolken att sammanställa den varje gång.
Detta är en förlängning av den punkt som noteras något ovanför. Magento lagrar mycket information [inte bara DB] på serverns hårddisk, vilket som du vet är den långsammaste länken i kedjan. Detta inkluderar cacher, session information och så vidare. Om du vill förbättra prestanda på detta område är det bästa sättet att gå vidare att implementera ett minnesbaserat filsystem för att säkerställa att all den data lagras i minnet i stället för dyra samtal till hårddisken.
Eftersom vi inte har platsen här, ska jag bara peka dig i rätt riktning. Vad du behöver göra är att ställa in en tmpfs-partition som tar hand om dina session- och cache-kataloger. Dessa finns under /var/www/domain.com/var/sessions/ och /var/www/domain.com/var/cache/ respektive.
Den platta frontmodulmodulen skapar ytterligare databastabeller för att lagra data i ett plattformat / linjärt format. Denna modul är tillgänglig för både kategori- och produktdata, så gärna göra det självständigt enligt ditt användningsfall.
Aktivering av denna modul rekommenderas endast för stora butiker. Butiker med en liten katalog borde definitivt hålla sig borta, eftersom det inte kan ge tillräckligt med en prestandaförlust för att garantera användning och kan faktiskt minska prestandan. Gör ett noggrant övervägt beslut här.
Magento's back-end är betydligt mer resursintensiv än frontänden eftersom den måste hantera mycket mer information. Och när din butik har nått ett visst tröskelvärde med avseende på antalet produkter, säg 5000, börjar det verkligen beskatta servern.
Att ha en dedikerad admin-server kan hjälpa till att få administratörspanelen att få CPU-cyklerna som den behöver, med negativ inverkan på prestanda för resten av webbplatsen.
Standard Magento-temat är ett bra ställe att börja från men är inte riktigt det mest effektiva. Låt mig utarbeta. Standardtemat är utformat för att visa alla Magento-funktioner och binder naturligtvis alla whiz bang-funktioner. Kom ihåg att Magento bygger en sida genom att analysera layouten vi specificerar och därigenom är sidagenereringstiden direkt relaterad till antalet block du använder på en sida.
Så när du bygger ditt eget tema undviker du ofrånkomliga komplexa layouter, förenklar och / eller kombinerar de mindre blocken för att minska CPU-cyklerna som krävs för att göra sidans kod.
Magento har ett elegant system för att programmatiskt inkludera / utesluta stilark och JavaScript-filer inom teman. Många temaförfattare verkar helt förbikoppla detta system genom att bara inkludera dessa element manuellt i HTML-templeringen. Detta är fel.
Det rätta sättet att inkludera dessa tillgångar visas nedan:
Genom att använda koden ovan i layoutfilerna kombinerar Magento JS-filerna i en enda fil och serveras till webbläsaren i en enda förfrågan.
Reglerna för optimering av normala webbplatser eller applikationer gäller också här. Webbläsare begränsar vanligtvis antalet nedladdningar från en domän till 2-5 vilket är mycket begränsande när du laddar ett medierikt tema med ett antal små tillgångar. Det finns ett antal enkla sätt ut av detta
Det första och enklaste är något du är bekant med: sprites. Med hjälp av sprites kan du minimera antalet samtidiga förfrågningar som genereras av ditt tema.
Denna metod kanske inte fungerar i alla fall. Vad händer om ditt tema har en massa fina skript, videor och vad? Dessa bör inte blockera laddningen av resten av sidan. I dessa fall skapar du bara en underdomän för statiska tillgångar och pekar din Magento-installation till resursen.
Logging är viktigt men det är också dyrt eftersom det måste skriva till disken. Magento är i allmänhet väldigt chattigt när det gäller att logga och snart kommer du att vara knä djup i loggfiler, de flesta som du inte behöver.
Lösningen här är att inaktivera alla utom de väsentliga delarna. Har du aktiverat långsamma frågor för att vara inloggad på din produktionsserver? Stäng av det, just nu! Långsamma frågor måste undersökas och fixas bra före distributionen. Den har sin plats i en utvecklingsserver, inte en produktionsserver.
Detta är en annan viktig spets som många människor fortsätter att glömma. Oavsett om det är versionen av PHP, MySQL eller Magento själv, ger de nyare versionerna stor hastighet och stabilitet vilket du inte riktigt har råd att missa.
Speciellt i fråga om Magento fixar även varje mini uppdatering ett antal prestationsproblem och buggfixar så länge filialen är märkt stabil, uppgradera!
Magento har en spiffy kompilator modul som lovar var som helst mellan en 25% -50% speedup. Som namnet antyder, kompilerar denna modul alla Magento-filer och leder därmed till bättre prestanda.
Observera att den här modulen fortfarande är i beta och endast stöder 1,3x-byggnader. Detta borde vara klart snart så håll den här i åtanke också.
Fooman Speedster är en kraftfull förlängning som kan ge din butik en bra ökning i prestanda. Det fungerar genom att kombinera, minska, komprimera och cache dina JavaScript och CSS-filer. Utöver detta möjliggör det också GZIP-komprimering för resten av affären.
Sammantaget betyder det att mindre data skickas och mindre förfrågningar som är en nettovinst som du ser det. Det fungerar med alla stora versioner av Magento och är definitivt ett måste för alla butiker.
En annan av de saker som du bör göra regelbundet för att förbättra prestanda. Du måste reparera din databas, om det behövs och sedan optimera det. Du kan göra det via dina värdar CPanel, phpMyAdmin eller bara skalkommandon. Här är en snabb länk som går igenom processen genom att använda phpMyAdmin.
Och vi är klara! Idag har vi tittat på ett antal sätt att förbättra Magento prestanda. Förhoppningsvis har det varit användbart för dig och du tyckte det var intressant. Jag är säker på att jag har missat ett antal poäng här så var snäll och chime i kommentarerna med de tips du har använt.
Frågor? Trevliga saker att säga? Kritik? Klicka på kommentarfältet och lämna mig en kommentar. Lycklig kodning!