TTFB – Time to First Byte na desktopu 2–4× pomalejší než na mobilu

mkoula
Backer | 57
+
0
-

Dodělali jsme web https://www.seyvillas.com na Nette 3 a v 1 presenteru (třeba homepage) sledujeme divné chování – HTML je stejné – web je responzivní, ale děje se tam něco divného a to, že hodnota TTFB je na desktopu podstatně pomalejší než na mobilu, zatímco by to spíš člověk čekal obráceně.

Na desktopu je viditelná prodleva před vykreslením, na mobilu to člověk ani neregistruje a právě to způsobuje TTFB, třeba v Chrome Dev Tools.

Mobil: okolo 1 vteřiny
Desktop: 2–3 vteřiny

Pokud třeba změníme v Chrome hlavičku na mobilní, pak vše funguje podstatně rychleji.

Nemáte někdo tušení, co by toto mohlo způsobovat? Kde hledat, jak to debugovat?

Editoval mkoula (13. 12. 2019 14:10)

David Matějka
Moderator | 6445
+
+2
-

no obecne je dost tezky radit, nezbyva ti nic nez to nejak vyprofilovat. zacal bych tim, ze si das php soubor, ktery jen jen vrati echuje string a nebude spoustet aplikaci. pak zjistis, jestli za zpomaleni muze server nebo aplikace. kdyz aplikace, tak muzes zkusit treba blackfire nebo pokracovat v manualnim profilovanim posouvanim toho „early returnu“.

mkoula
Backer | 57
+
0
-

Díky. Mě tam prostě zaráží to, že na mobilu to je mnohem rychlejší. To mi prostě hlava nebere.

Zkoušel jsem uložit statické HTML one homepage jako php soubor bez php kodu na server a to funguje rychle, takže soudím, že to bude někde v aplikaci. Zkusil jsem nakešovat vše sahající do DB, ale dělá to to samé a hlavně to je i u mě na lokále stejně zabržděné na desktopu a když se přepnu na mobil je to občas i 3× rychlejší…

David Matějka
Moderator | 6445
+
+2
-

No když ti to blbne i na localu, tak je vyprofilovani pomocí blackfire věc na pár minut.

mkoula
Backer | 57
+
+3
-

Tak jsem si pustil tvé již archivní video a nejdříve zkusil xdebug profiler, neb jsem ho měl nainstalovaný a rozběhaný, čili jen pár řádek do configu a odhalil mi mobile vs desktop, že knihovna mobiledetect/mobiledetectlib – se nějak divně chová, pokud jí člověk nasadí přes DI a do více částí aplikace… Jakoby se nějak sama klonovala a snažila detekovat na desktopu se snažila projít všechny možné mobilní agenty – což v zacyklení vytvořilo až desítky tisíc dotazů.

Tak jsem trochu změnil kód a použiju jí na vstupu jen jednou a dál už jí nepředávám a problém je víceméně pryč…

Každopádně moc díky za navedení ;-)