Letar du efter framgångsrika sätt att snabba upp Laravelprestanda när du arbetar med ditt projekt? Då har du kommit till rätt ställe!
Laravel är ett populärt PHP-ramverk med öppen källkod. Det är känt för sin robusta säkerhet och enkla men ändå sofistikerade kodningsarkitektur. Laravel är ett utmärkt val för att bygga banbrytande webbapplikationer som kan öka intäkter och driva företag framåt.
Trots detta så kan Laravels prestanda bli långsam om du inte använder rätt optimeringstekniker.
Det är helt enkelt tur att det finns många hacks för att maximera Laravels prestanda. Vi har sammanställt en lista över de mest effektiva optimeringstipsen.
Varför är optimering av Laravels prestanda så viktigt?
Utvecklare måste ägna stor uppmärksamhet åt prestandan hos varje Laravel-applikation innan de släpper den. Som ett resultat så säkerställer de dess framgång. Detta är en av flera egenskaper som en Laravel-utvecklare bör ha.
Optimering av Laravels prestanda med kodjusteringar och kommandon kan hjälpa till att uppnå detta, och kan även ha ett stort inflytande på effektiviteten i din app.
Är Laravel långsamt?
Laravel är ett snabbt ramverk som levereras med en båtlast av funktioner och egenskaper (t.ex. Memcache, databasstöd, Redis osv.) som hjälper till med prestandan. Detta ramverk låter även mjukvaruproffs producera en robust kod med relativt liten ansträngning för att uppfylla sina projektmål, stora som små.
Eftersom data lagras som nyckel-värdepar i serverns RAM-minne så kan användarna cachelagra så mycket som de vill för att underhålla sina appar eller webbplatser. Allt sker på ett snabbt och smidigt sätt. Baserat på Google Trend så är Laravel för närvarande det mest populära backend-verktyget för PHP.
Den nyligen släppta versionen Laravel 9 erbjuder nya prestandaförbättringar. Det har exempelvis minimala PHP-specifikationer och kräver Symphony 6.0 som körs 20,65 % snabbare än PHP 8.1. Den nya designen för route:list-kommandot minskar nu den röriga visningen av komplexa kommandon. Laravel 9 har även ett effektivare gränssnitt för Query Builder och många fler funktioner.
Trots detta så finns det vissa faktorer som bidrar till en långsam prestanda hos Laravel. Många utvecklare har dåliga vanor, exempelvis att ladda upp ett stort antal tunga bilder, använda gamla PHP-versioner, kompilera stora mängder onödiga data eller missa ta bort onödiga filer från sina projekt.
Laravels sofistikerade MVC PHP-arkitektur och tillhörande bibliotek ger en utmärkt blandning av säkerhet, prestanda och användbarhet. En bra tumregel är därför att lära sig några Laravel-optimeringshacks för att uppnå högre prestanda.
Webbplatsens hastighet är viktig
Första intrycket är bestående för varje varumärkesbild. Webbplatsens hastighet är det första intrycket som du gör på dina webbplatsbesökare. Visste du att cirka 50% av onlinekunderna överger webbplatser som tar mer än tre sekunder att ladda?
Webbplatsens hastighet (även kallad webbplatsens prestanda) avser den tid som det tar för en webbläsare att ladda fullt fungerande webbsidor från en specifik webbplats. Som ett resultat så har den en direkt inverkan på användarupplevelsen (UX) och konverteringsfrekvensen.
Webbplatsens prestanda påverkar även din SEO-placering i sökmotorerna. Om flera webbplatser erbjuder den information som din besökare söker så kommer snabbare webbsidor att visas först. Om din webbplats är trög, är det mindre sannolikt att den rankas högt i Google’s sökresultat.
Följaktligen så bör du investera lite tid på att tillämpa effektiva lösningar för optimering av webbplatsens prestanda.
Fördelar med prestandaoptimering i Laravel
Även om du kanske har designat en fantastisk Laravel-applikation så finns det alltid utrymme för förbättringar för att nå perfektion. Att öka din Laravelprestanda har ett antal fördelar:
- Öka affärstillväxten: Förbättrad Laravelprestanda innebär en effektivare webbplats eller applikation. Som ett resultat av detta så ökar dina chanser att nå en bredare målgrupp.
- Smidigare utvecklingsmiljö: De tips för prestandaoptimering för Laravel som listas nedan hjälper utvecklare att spara mer tid på kodning, utföra uppgifter snabbare och förbruka färre resurser.
- Hantera trafiken bättre: Att lära sig hur man använder Laravels kösystem på ett smart sätt hjälper din webbplats att hantera antalet begäranden när den växer och inhämtar en stor mängd trafik.
Hur man mäter Laravels prestanda
Du har lagt ner mycket tid och kraft på att få din snygga webbapplikation att fungera. Om den är långsam kommer dock ingen att använda den och du blir som en björn med ont i huvudet. Det är här som Laravels prestandatester kommer in i bilden.
Du kan använda en mängd olika verktyg för att utföra prestandatester på din dyrbara skapelse. Låt oss ta en titt på tre av dem.
1. Blackfire.io
Blackfire.io är en intuitiv webbapp-profilerare som identifierar viktiga sökvägar så att du kan koncentrera dig på de viktiga områdena i din PHP-app.
Den innehåller flera prestandaövervaknings-funktioner och visar minnesanvändning, CPU-tid samt I/O. Blackfire.io låter dig även sortera funktionsanrop och sökvägar för att se hur din Laravel-applikation fungerar.
2. Laravel Dusk
Laravel Dusk låter dig testa din applikation och kontrollera hur den fungerar ur användarens perspektiv. Du behöver inte installera Selenium eller JDK för att använda Dusk eftersom det inkluderar Chromedriver som standard.
Med ett utvecklarvänligt API som Dusk så kan du automatisera webbläsartestning. Detta utesluter behovet av de rigorösa processer som krävs av ChromeDriver och PHP WebDriver separat.
Dessutom så lagrar Dusk skärmdumpar och webbläsarkonsol-utdata från det misslyckade testet så att du kan hitta åt eventuella buggar.
3. LoadForge
LoadForge är skräddarsytt för Laravel, och skannar din webbplats automatiskt. Det identifierar dessutom problem och tillhandahåller omfattande grafer tillsammans med prestanda-statistik för varje sida.
I Chrome så gör LoadForge att du kan fånga webbläsaråtgärder och sedan konvertera dem till ett LoadForge-test. På så sätt kommer du att kunna skapa en realistisk användarupplevelse genom att simulera att användare loggar in, navigerar på din webbplats eller till och med lägger beställningar.
Hur man optimerar Laravel’s prestanda (17 metoder)
I det här avsnittet så går vi igenom några av de bästa idéerna och taktikerna med en finkam som hjälper dig att förbättra din Laravel-prestanda.
1. Route-cachelagring
Route-cachelagring är en utmärkt funktion, speciellt för appar med ett stort antal konfigurationer och router spridda över koden. Det är en grupp router som är packade i ett enda kommando för att minska den tråkiga uppgiften att kartlägga dina router manuellt. Som ett resultat kommer din webbplats sidor att laddas mycket snabbare.
Route-cachelagring gör att Laravel kan hämta router med jämna mellanrum från den förkompilerade cachen istället för att behöva börja från grunden för varje ny användare.
Använd det här kommandot för att cachelagra de routingdata som krävs:
php artisan route:cache
Tänk på att cachen upphör när användaren lämnar din webbplats. Det är även viktigt att köra det route cache-kommandot varje gång efter att du har gjort strukturella ändringar (t.ex. route-filer och konfigurationer) på din webbplats, eftersom eventuella ändringar som görs efteråt inte kommer att träda i kraft.
Om du vill rensa route-cachen, kör följande kommando:
php artisan route:clear
2. Optimera Composer
Laravel använder ett separat verktyg som heter Composer för att hantera olika beroenden. När du först installerar Composer så laddar det in utvecklarberoenden i ditt system som standard.
Dessa beroenden är användbara för att utveckla en webbplats. Men när din webbplats väl är i full drift behövs de inte längre. Då kommer de i själva verket bara att sakta ner den.
När du använder Composer för att installera paket, använd parametrarna --no-dev
och -o
enligt följande för att ta bort dev-beroende:
composer install --prefer-dist --no-dev -o
Detta kommando låter Composer skapa en katalog för att optimera auto-laddaren och öka prestandan. Den begär helt enkelt att den officiella distribueringen ska hämtas och paketeras, utan utvecklingsberoende.
Var noga med att inte eliminera några runtime-beroenden. Detta kan äventyra din webbplats prestanda eller till och med få den att krascha.
3. Minska automatiskt laddade tjänster
Målet med Laravel är att göra utvecklingsprocessen så luftig som möjligt för utvecklare. Ett exempel är att när du startar Laravel, så laddar den automatiskt en stor volym tjänsteleverantörer som är listade i config/app.php-filen. Som ett resultat så kan du snabbt komma igång med ditt projekt.
Även om detta är ett fördelaktigt steg av Laravel, så behöver du inte använda alla dessa tjänster för att bygga en applikation.
Ta exempelvis REST API. Du behöver inte tjänster som View Service Provider eller Session Service Provider. Dessutom så följer många utvecklare inte standardramverksinställningarna. Du kan helt enkelt inaktivera tjänster som är överflödiga för dina behov (t.ex. Paginerings-tjänsteleverantör, Översättnings-tjänstleverantör, Auth-tjänsteleverantör, osv).
Du kommer att kunna förbättra hastigheten på dina Laravel-applikationer genom att tillämpa samma princip på andra appar. Se bara till att du inte tar bort några viktiga tjänster och dubbelkolla allt innan du kör igång.
4. Använd Artisan-kommandon och cachelagra effektivt
Artisan är ett populärt kommandoradsverktyg som följer med Laravel. Det gör det enkelt för utvecklare att utföra återkommande och komplexa uppgifter automatiskt. Webbplatsskapare kan även använda detta verktyg för att utföra tester och generera kommandon.
Att använda Artisan-kommandon på ett smart sätt kan förbättra din app-prestanda. Nedan har vi listat flera av de bästa cachelagrings-kommandona som du kan använda.
Konfigurations-cachen
Cache config är ett utmärkt kommando för att få en hastighetsökning. Det sammanställer alla konfigurationsvärden i din applikation till en fil så att ramverket kan laddas snabbare. Allt som du behöver är att köra:
php artisan config:cache
Observera att du inte bör köra kommandot config cache under lokal utveckling. Detta beror på att konfigurationsinställningarna kan behöva ändras ofta under utvecklingen av din app.
För att rensa config-cachen, kör det här kommandot:
php artisan config:clear
Visningscachen
Visningscachen är en annan aspekt av applikationen som inkluderar en cache. View-cachen lagrar genererade Blade-mallar för att öka hastigheten på ditt projekt. Du kan använda kommandot nedan för att kompilera alla vyer manuellt och optimera prestandan:
php artisan view:cache
Kom ihåg att rensa cachen när du laddar upp en ny kod; annars kommer Laravel att använda dina gamla val och du kommer att spendera mycket tid på att försöka felsöka detta. Kör det här kommandot för att rensa visningscachen:
php artisan view:clear
Applikations-cachen
Detta är huvudcachen i Laravel. Den sparar all data som du cachelagrar manuellt i din app. Att använda Laravel’s cache är ett smart tillvägagångssätt för att snabba upp vanlig data och optimera Laravel’s prestanda. Om du använder taggar eller flera cachelagringar så kan du bara rensa vissa delar av cachen.
Här är hantverkarkommandot för att rensa Laravel-cachen:
php artisan cache:clear
Tänk på att det här kommandot inte tar bort någon route-, konfigurations- eller visningscache som finns i mappen /bootstrap/cache/.
5. Minska paketanvändningen
Som ett ramverk med öppen källkod och ett stort community så är det bara naturligt att fler och fler paket och versioner släpps i befintliga paket i Laravel. Du är fri att använda dem och deras funktioner direkt i din applikation.
Du måste inkludera dessa paket i filen composer.json
. Laravel kommer därefter att installera dem tillsammans med deras beroenden.
Det finns dock några faktorer som måste beaktas innan du lägger till nya paket till en applikation. Alla är exempelvis inte designade för samma syfte. Vissa paket är även skapade för att utföra ett brett utbud av funktioner.
När du inkluderar paket med många beroenden, så växer applikationens storlek. Detta kan medföra att dess prestanda så småningom blir lidande. Det är därför det är viktigt att granska beroenden noggrant innan du lägger till något paket.
6. Uppgradera till den senaste versionen av PHP
Precis som alla andra bitar av kod eller programvara så är det alltid bäst att uppdatera din PHP-version till den senaste versionen.
Det främsta skälet till att använda en uppdaterad PHP-version är säkerhet. Under två år så får varje PHP-version säkerhetskorrigeringar och buggfixar. Ditt system kan äventyras om du fortsätter att använda tidigare versioner som inte längre underhålls.
Många utvecklare kanske även är omedvetna om att ju äldre en PHP-version blir, desto långsammare blir dess prestanda. För att öka effektiviteten så har den nuvarande PHP-versionen enastående prestandaförbättringar som snabbare exekvering av begäranden, uppräkningar, fibrer och arvs-cache.
Här på Kinsta så använder vi den senaste stora PHP-versionen (PHP 8.1) för alla miljöer. Som ett resultat så kan användare dra nytta av plattformens omfattande möjligheter och optimera sina appar för maximal hastighet och effektivitet.
7. Använd köer
Att avlasta tröga uppgifter till ett kö-jobb är en enkel teknik för att snabbt maximera hastigheten på din Laravel-applikation.
Ibland så behöver du inte informationen i användargränssnittet direkt. I det här fallet så kan sådana uppgifter skjutas upp och köras senare i bakgrunden genom en separat process (t.ex. genom att skicka ett e-postmeddelande). Detta kan öka prestandan för din apps online-begäranden avsevärt.
Laravel stöder en mängd olika kö-drivrutiner som IronMQ, Redis, Amazon SQS och Beanstalkd. Det inkluderar dessutom en inbyggd kö-arbetare som kan köras med följande kommando:
php artisan queue:work
Du kan lägga till ett nytt jobb i kön med den här metoden:
Queue::push('SendEmail', array('message' => $message));
Använd metoden nedan via Carbon om du vill skjuta upp utförandet av ett av de köade jobben. Säg exempelvis att du vill schemalägga ett jobb som skickar ett e-postmeddelande till en kund 10 minuter efter att de har skapat ett konto:
$date = Carbon::now()->addMinutes(10);
Queue::later($date, 'SendEmail@send', array('message' => $message));
8. Använd distribueringsverktyget för att vädja till alla kommandon
Okej, vi inser att det här inte är ett rent prestandatips för Laravel. Det är dock en underbar tidsbesparande teknik för utvecklare som är lika viktig för att förbättra produktiviteten.
Deployer är ett PHP-baserat distribueringsverktyg som låter dig distribuera din kod till olika servrar. Det innehåller skript för populära ramverk som Laravel, Symfony, Zend, Magento, CakePHP med flera.
Om du inte har haft att göra med Composer tidigare för att administrera dina projekts beroenden kommer du snabbt att bekanta dig med Deployer. Använd det här verktyget för att automatisera alla dina maskinutplaceringsoperationer, exempelvis att starta servern, klona till en fjärrserver och övervaka en fjärr-host.
Deployer har inställningar för att utföra migreringar, seedes och optimeringsfunktioner i Laravel-applikationer med ett enda kommando:
php deployer.phar deploy production
9. Använd Lumen för små projekt
Det finns tillfällen då utveckling av en liten applikation (t.ex. mobilappar eller Angular-appar) inte kräver användning av ett fullskaligt ramverk som Laravel. I det här scenariot så kan du överväga att använda Lumen istället.
Lumen är en mikroram som har utvecklats av samma skapare som Laravel. Det är en lättare version av Laravel och riktar in sig på snabbhet och prestanda för mikrotjänster. Det kräver minimal inställning och alternativa routingparametrar när man bygger webbappar, vilket möjliggör en snabbare utvecklingsprocess.
Lumen kan exempelvis hantera 100 begäranden per sekund. Du kan även integrera verktyg eller paket från tredje part för att få nya funktioner. Dessutom så stöder Lumen alla plattformar och låter dig uppgradera till Laravel.
10. Utnyttja JIT-kompilatorn
PHP är ett serverbaserat språk som kräver tolkar för att översätta koden till en bytekod som datorn kan förstå.
Den här processen tar mycket tid och förbrukar mycket resurser. Det är därför som programmerare väljer skriptmotorer som Zend-motorn för att utföra C-subrutiner som måste upprepas varje gång som en applikation körs. Som ett resultat så blir din applikation långsammare.
För effektivitetens skull så använder utvecklare JIT-kompilatorn (Just-in-time) för att endast upprepa proceduren en gång. HHVM, som uppfanns och används i stor utsträckning av Facebook, är den föredragna JIT-kompilatorn för Laravel. Etsy, Wikipedia och dussintals andra webbplatser.
11. Använd dig av Eager Loading
För att interagera med databaser på ett trevligt sätt så tillhandahåller Laravel en fantastisk objekt-relationsmappare (ORM) som heter Eloquent. Den gör det möjligt för dig att relatera tabellerna och hantera alla CRUD-funktioner i PHP i ett enkelt format.
När du hämtar modeller från en databas och sedan utför någon typ av bearbetning på deras relationer, så är relationsdatan ”latladdad”. Detta innebär att data inte laddas förrän du får tillgång till relationen.
Du kommer att få köra N+1 frågor för att hitta ditt svar med lat laddning, vilket illustreras i följande exempel:
$books = AppBook::all();
foreach ($books as $book) {
echo $book->author->name;
}
För att optimera Laravels prestanda och lösa N+1-frågeproblemet så kan Laravel ”ladda” datan ivrigt, som visas nedan:
$books = AppBook::with('author')->get();
foreach ($books as $book) {
echo $book->author->name;
}
12. Komprimera bilder
Bilder spelar en viktig roll i en webbplatsdesign. De är viktiga för att förbättra användarupplevelsen (UX) och öka sökresultaten.
Den genomsnittliga laddningstiden för en webbplats är två sekunder. Tunga bilder fördröjer webbplatsens laddningshastighet. Om du har en långsam webbplats så är risken stor att du förlorar många besökare.
Bildkomprimering minimerar storleken på din originalbild utan att offra dess kvalitet. Som ett resultat så optimeras webbplatsens hastighet. Av denna anledning så erbjuder Laravel snygga alternativ för att komprimera bilder som TinyPNG, reSmush.it eller ImageMin.
13. Använd ett CDN
Genom att använda ett CDN-nätverk (Content Delivery Network) så kan du verkligen optimera Laravels prestanda. Du kan ladda statiskt innehåll från en CDN-server i stället för direkt från den maskin på vilken filerna finns. Som ett resultat så når datan din målgrupp betydligt snabbare.
Med andra ord så cachelagras den senaste versionen av din webbplats till ett globalt nätverk av molnservrar. Även om dina besökare befinner sig geografiskt långt från din plats så kan de därför få tillgång till din webbplats snabbt.
Kinsta CDN drivs av Cloudflare och tillhandahålls kostnadsfritt. Det gör det möjligt att leverera cachelagrade filer från din webbplats från din primära domän snarare än från en sekundär CDN-domän. Som ett resultat så förbättras din SEO-ranking.
Kinsta CDN hjälper dessutom till att ta bort oönskade komponenter från dina JavaScript- (JS) och CSS-filer. Detta minskar kraftigt den tid som det tar för sidorna på din webbplats att ladda och minskar bandbreddskonsumtionen.
14. Minimera JS- och CSS-kod
Öka din Laravelprestanda genom att minimera dina JavaScript- och CSS-filer innan du fortsätter med paketeringen av tillgångar.
Detta minifieringssteg tar bort all onödig kod från din applikation. Det gäller exempelvis tomma utrymmen, kommentarer och omdöpning av variabler med hjälp av förkortade namn. Vid behov så kan du ändra storleken på dina bilder för att skapa miniatyrbilder.
Som ett resultat så förbättrar du din UX samtidigt som du minskar antalet HTTP-anrop.
15. Använd paketering av tillgångar
Det finns flera verktyg tillgängliga för att komprimera och paketera filer som Javascript och CSS till en enda fil, exempelvis Laravel Mix och Laravel Packer.
Alla Laravel-applikationer innehåller Laravel Mix som standard. Det är ett användarvänligt API som används för att skapa Webpack-byggen för dina PHP-applikationer, med hjälp av en rad vanliga Javascript- och CSS-preprocessorer.
Om du antar att du behöver en viss samling stilformat för din applikationsfil så kan du ange något liknande:
mix.styles([
'public/css/vendor/normalize.css',
'public/css/styles.css'
], 'public/css/all.css');
Nu kommer Laravel Mix automatiskt att generera en all.css
-fil från normalize.css
och style.css
-filerna. I stället för att få varje formatmall separat så kan du därför kombinera dem till en enda all.css-fil.
Laravel Packer är ett kommandoradsverktyg som kan installeras via Composer. Det låter dig minska och bunta din JS- och CSS-kod. Det är dock svårare att använda än Laravel Mix.
Även om det här tipset är bra för att boosta Laravels prestanda, så kommer sammanslagning av många filer att göra filen enorm och i slutändan få motsatt effekt. För att lösa detta problem så använder du Laravel Mix för att krympa dina filer genom att köra det här kommandot:
npm run prod
16. Begränsning av inkluderade bibliotek
Laravel ger dig friheten att lägga till så många bibliotek som du vill. Detta är en fantastisk funktion. Att lägga till en massa bibliotek sätter dock en stor press på din applikations prestanda. Det kan även påverka hela användarupplevelsen.
Det är därför viktigt att skanna alla biblioteksdata som för närvarande används i koden. Du kan hitta dessa bibliotek i config/app.php file
. När du granskar biblioteken så tar du bort de bibliotek som du vet inte längre är användbara för dig.
Det är även en bra idé att granska composer.json
för att hitta onödiga beroenden.
17. Överväg att använda New Relic
New Relic är ett APM-verktyg (Application Performance Management) som integreras av utvecklare i deras Laravel-appar. Det används för att analysera och övervaka statistik som speglar prestandan för att optimera effektiviteten och undvika avbrott i realtid.
New Relic kan hjälpa dig att bedöma din Apdex-poäng och mäta hur din app står sig jämfört med konkurrenterna på marknaden. Det gör det även möjligt för dig att skapa varningsprinciper beroende på dina kriterier.
Om du inte vill registrera dig för en tredjepartstjänst så kan du använda Kinsta’s APM-verktyg. Det kan hjälpa dig att hitta flaskhalsar för PHP-prestanda på din WP-webbplats utan extra kostnad.
Sammanfattning
Laravel är ett snabbt växande PHP-ramverk och det finns många handledningar tillgängliga för alla typer av användare som vill lära sig Laravel, oavsett kunskapsnivå.
När det gäller användarupplevelsen i den digitala världen så är prestanda en avgörande faktor för att etablera en stark närvaro på nätet. Det är ingen överraskning att organisationer ägnar mer tid och resurser åt att tillhandahålla en högkvalitativ UX.
Om du är en Laravel-utvecklare så kan du känna dig säker på att metoderna som beskrivs ovan kommer att skapa en betydande förbättring av prestandan och upprätthålla en smidig applikation.
Vilka andra metoder har du använt för att snabba upp dina Laravel-applikationer? Låt oss veta i kommentarsfältet nedan.
Lämna ett svar