Autor Zpráva
anonymníí
Profil *
Ahoj,
převzal jsem do správy e-shop, nejedná se o žádné OS řešení, je psaný na míru a používá klasicky PHP/MySQL/Smarty.

Když jsem začal pátrat po tom, proč je tak strašně pomalý, ve vývojářských nástrojích mě zarazilo, že obě stránky se vygenerují celkem rychle, v řádu ±0,3s, ale trvá strašně dlouho, než se vůbec začne něco generovat.

Konkrétně ve vývojářských nástrojích vidím latenci (čekání) na samotnou stránku, a to kolísavě od 1,4 do 2 sekund.

Vše běží na VPS, na co bych se měl zaměřit, abych snížil tuto položky, tedy latenci?

Předpokládám, že by to šlo vyřešit vhodným cachováním, proto jsem toto přidal i do titulku, ale přiznám se, že nevím jak. Moc se v tom nevyznám.
Stránka nějaké cachování nastavení má, ale to se asi týká prohlížečové cache (cache-control, atp.).

Rád poskytnu i další informace, jen momentálně nevím, které jsou podstatné, na co se zaměřit.


Díky.
Keeehi
Profil
Ono to s tím časem není až tak jednoduché. Třeba u této stránky mi chrome v detailu zobrazí 6 různých časů. První 3 se týkají dejme tomu DNS a ty druhé 3 už představují komunikaci se servrem. První z nich je odeslání požadavku, tam nejspíše problém není. A zbývají mi 2 údaje.
Waiting (TTFB)    136.811 ms
Content Download    3.116 ms
Ovšem toto neznamená, že se stránka vygenerovala za 3ms a předtím to někde 136ms čekalo. Ne, celé to vygenerování zabralo 139ms. Z konzole se nedozvíme, co dělá server těch 136ms a co ty zbylé 3, ale víme, že mu trvalo 136ms, než nám něco poslal. To jenom tak abychom si rozuměli co ty časy znamenají a teď k tomu hlavnímu.

Záleží na tom, jak je ten eshop napsaný. Mohou nastat 2 případy (a celá škála mezi nimi, ale to je teď jedno):
1) Script čeká, až se mu všechno vygeneruje a když je těsně před koncem a má už celý výstup pro uživatele k dispozici, tak ho najednou odešle. V tom příadě by ty vaše časy znamenaly, že se stránka 1,4 - 2 sekundy generuje a ten výstup se stihne odeslat za 0,3 sekundy.
2) Script odesílá data ihned jakmile je má k disozici, nečeká, až je bude mít všechna. V takovém případě by ty časy znamenaly, že se vám to někde 1,4-2 sekundy fláká (například se čeká na přidělení procesorového času pro PHP) a pak se to zvládne vše za 0,3 sekundy vygenerovat a odeslat.

Velmi pravděpodobně to bude někde blízko k té možnosti 1), takže generování okolo 2 sekund a odesílání 0,3. Pokud chcete zjisti, kde je to úzké hrdlo, časy z konzole vám v tom moc nepomůžou. Sežeňte si na to profiler a ten už dokáže zjistit, kde v kódu se tráví nejvíce času. Osobní tip: dazabáze

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0