Kodėl jūsų Laravel svetainė lėta — ir kaip tai išspręsti per savaitę
Dauguma Laravel svetainių lėtėja ne dėl serverio, o dėl 4 dažniausių klaidų kode. Parodysime kaip jas diagnozuoti ir pašalinti.
Tipiškas Laravel sulėtėjimas — 4 taisytini kodo antipatternai. Vienas e-komercijos klientas (2000 produktų) sumažino TTFB nuo 4,8s iki 0,6s be serverio keitimo.
Problema yra ne serveris
Kai klientai sako „svetainė lėta" — pirmiausia žiūrime ne į serverio specifikacijas, o į kodą. 90% atvejų problema yra viena iš keturių:
1. N+1 užklausų problema
Tai klasikinis Laravel antipattern. Pavyzdys:
// BLOGAI — generuoja 1 + N SQL užklausas
$posts = Post::all();
foreach ($posts as $post) {
echo $post->author->name; // kiekviena iteracija = nauja užklausa
}
// GERAI — 2 užklausos visam sąrašui
$posts = Post::with('author')->get();
Kaip diagnozuoti: įdiekite Laravel Debugbar ir žiūrėkite SQL skaičių. Jei puslapyje matote 50+ užklausų — turite N+1 problemą.
2. Nėra kešavimo
Kiekvienas puslapio užkrovimas pakartotinai skaičiuoja tuos pačius duomenis. Paprastas sprendimas:
$stats = Cache::remember('dashboard.stats', 3600, function () {
return DB::table('orders')->selectRaw('...')->get();
});
Redis + Laravel Cache = iki 10x greitesni atsakymo laikai dažnai lankomose vietose.
3. Neoptimizuoti duomenų bazės indeksai
Jei vykdote užklausas pagal el. paštą, statusą ar datą — tose kolonose turi būti indeksai:
$table->index(['status', 'created_at']);
$table->index('email');
Kaip rasti trūkstamus indeksus: naudokite EXPLAIN prieš lėtas užklausas.
4. Assets nekompresinti ir nekešuojami
Statiniai failai (CSS, JS, paveikslėliai) turi būti minifikuoti, sujungti ir pateikiami su ilgu Cache-Control headeriu — idealu per CDN, o ne PHP.
location ~* \.(css|js|jpg|png|svg|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
Rezultatai
Vienas mūsų klientas (e-komercija, ~2000 produktų) turėjo 4.8s TTFB. Po šių keturių pakeitimų — 0.6s. Be serverio keitimo, be papildomų išlaidų.
Jei jūsų svetainė lėta ir nesate tikri kodėl — susisiekite. Atliekame nemokamą greitaveikos auditą per 48 valandas.
Turite klausimų ar norite aptarti savo projektą?
Susisiekti