Black friday Black friday
Aprílový black friday tě nenechá v klidu! Až 80 % prémiového obsahu zdarma. Více informací

Diskuze: PHP cachování

PHP PHP PHP cachování American English version English version

Aktivity (1)
Avatar
Michal Kuba
Redaktor
Avatar
Michal Kuba:19. února 11:38

Ahoj,

Snažím se nějakým způsobem zrychlit web. Postavil jsem ho před časem na základě zde ukazované MVC architektury a web už je zaběhnutý, navíc nemám dostatek prostoru to celé předělat třeba do Nette. Poslední dobou ale při testování rychlosti zjišťuji, že mám obrovský TTFB (pohybuje se třeba i okolo 3000ms). Je možné, že určitou vinu nese hosting Wedos, ale určitě i samotný web by se dal urychlit.

Zkusil jsem: Zkoušel jsem hledat nějaké základní php cachovací knihovny, zajímavě vypadala https://www.phpfastcache.com/, ale tu se mi nepodařilo zprovoznit - přes composer jsem to stáhnul, potom ve SmerovacKontroler načítal nejprve autoload ve vendoru, který měl následně otevřít

use phpFastCache\CacheManager;

jenže to skončilo chybou, protože kvůli podmínce v indexu

function autoloadFunkce($trida)
{
        // Končí název třídy řetězcem "Kontroler" ?
    if (preg_match('/Kontroler$/', $trida))
        require("kontrolery/" . $trida . ".php");
    else
        require("modely/" . $trida . ".php");
}

to vždy chtělo hledat daný soubor v modelech a ne ve vendoru.

Jsem už trochu nešťastný z nesnadnosti něco implementovat do této architektury ale jak jsem říkal, na předělání do Nette nemám momentálně kapacitu.

Předem díky za jakékoliv rady :)

 
Odpovědět 19. února 11:38
Avatar
Roman
Člen
Avatar
Odpovídá na Michal Kuba
Roman:19. února 13:03

Měl jsem stejný problém a vyřešil to odchod od wedosu.

 
Nahoru Odpovědět 19. února 13:03
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na Roman
Michal Kuba:19. února 13:06

Fakt, to může mít takový zásadní vliv Wedos na tom? Nebo se mi to jinde zlepší třeba o sekundu, ale stejně to furt bude špatné a na vině tak bude i nemožnost cachování webu?

 
Nahoru Odpovědět 19. února 13:06
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:19. února 13:59

Muzes to kesovat do souboru. Pri kazdem ulozeni prepises soubor ve sve slozce cache. Ted to nejspis ukladas jen do db. Takze bys to duplikoval do souboru.

Vyhoda? 99% operaci je typu SELECT. Pokazde vytahujes stejna data znovu. Takhle si jen zkontrolujes existenci souboru a kdyz existuje, posles ho uzivateli. Kdyz ne, tak provedes jeho vytvoreni (kontaktujes php, to kontakuje sql, ...) Da se to resit pres htaccess, takze ani na php nemusis.
Vyhoda? Hostingy, kdyz jsou pomale, sekaji se a kdesi cosi, tak spoustet php je dost pomala zalezitost.

2. Druha vec, casto byva na hostingu vypnute ob_start a je nutne ho psat do php kodu. Priklady zde neznam, ale vsadim se, ze jsou o spoustu veci osizene. Takze se potom nedaji pouzit cross-hosting.
Obvykle se posila stranka pri prvnim echo. Kazde echo odesila cast stranky. Takze, bud to vse ulozis do promene. a nebo zapnes na zacatku ob_start. A on kazde echo schova a odesle az vysledek uzivateli jako jednu stranku.
To by mohlo zasadne zrychlit tez nacitani.

Ale wedos nemam, tak netusim, co tam a jak je nastaveno.

 
Nahoru Odpovědět 19. února 13:59
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na Peter Mlich
Michal Kuba:19. února 18:52

Nejsem si jistý, ale momentálně se databázové dotazy nijak neukládají, maximálně pokud na hostingu disponují nějakou keší, jinak ne.

Pro začátek asi zkusím využít tento jednoduchý postup na úpravu databázového wrapperu a uvidím, jestli se to nějak značně změní: https://www.itnetwork.cz/…borove-cache

Nějaký takový způsob jsi měl na mysli tím ukládáním do souboru?

 
Nahoru Odpovědět 19. února 18:52
Avatar
MicBlack
Člen
Avatar
Odpovídá na Michal Kuba
MicBlack:19. února 19:03

Ahoj,

pošli odkaz na web, ať můžeme kouknout do network console. Takhle je to hodně abstraktní.

 
Nahoru Odpovědět 19. února 19:03
Avatar
Tomáš Novotný:19. února 19:08

A není problém spíše v optimálnějším nastavení DB tabulek, sloupců a k tomu mít uzpůsobené dotazy? Měl jsem praktickou zkušenost, že záměna db klíče u sloupce z 'fulltext' na 'key' měla za výsledek, že 5s se proměnilo v mžik.... na tabulce 170k+ rows

Nahoru Odpovědět  +1 19. února 19:08
∞ ... the exact amount of possibilities how to deal with the situation ... so by calm, your solution is one of many
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na MicBlack
Michal Kuba:19. února 19:11

Na odkaz jsem zapomněl, omlouvám se.

Jedná se o https://zabav-deti.cz, který jsem před časem nasadil na novou a hezčí šablonu a až v tomto momentě jsem více pocítil celkové zpomalení, byť ani předtím to nebylo ideální.

Editováno 19. února 19:11
 
Nahoru Odpovědět 19. února 19:11
Avatar
David Klouček:19. února 20:06

Zajímalo by mě, co na tom serveru děláš, že takhle jednoduchej web je pomalej, to snad ani nemůže dělat PHP. Zjisti si časy a počty DB dotazů, pak případně můžeš řešit indexy https://php.vrana.cz/…i-indexu.php

Jinak, nic tě nenutí to celý hned předělávat na Nette MVC, ale můžeš použít jednotlivý komponenty z něj.

 
Nahoru Odpovědět  +2 19. února 20:06
Avatar
David Klouček:19. února 20:22

Taky se můžeš inspirovat tady a na svuj DB wrapper si udělat panel do Tracy:

https://api.dibiphp.com/…y.Panel.html
https://tracy.nette.org/cs/extensions

 
Nahoru Odpovědět 19. února 20:22
Avatar
Odpovídá na Roman
Uživatel sítě :19. února 20:28

Toto nebude Wedosem, sázím na špatnou optimalizaci DB či její nešikovné použití.

Nahoru Odpovědět 19. února 20:28
Chybami se člověk učí, běžte se učit jinam!
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na David Klouček
Michal Kuba:19. února 23:30

Wow, tak to jsem netušil, že když jsem před lety vytvářel celou DB a moc u toho nepřemýšlel (tou dobou jsem ještě význam indexů moc nechápal), tak teď přidání jen pár indexů pomohlo opravdu brutálně :)

Sice v PageSpeedu od Googlu se hodnocení na mobilu zvedlo asi jen o 8 bodů, ale TTFB spadlo tak, že už mě na to ani měřiče moc neupozorňují. Ještě to nějak poladím, ale už teď je při načtení stránky patrné obrovské urychlení, díky díky :)

 
Nahoru Odpovědět 19. února 23:30
Avatar
Peter Mlich
Člen
Avatar
Odpovídá na Michal Kuba
Peter Mlich:20. února 7:30

Vubec, stranku ukladat do html souboru. Abys nemusel volat ani php ani sql a hned posilal vysledek uzivateli v html.

 
Nahoru Odpovědět 20. února 7:30
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:20. února 7:34

No, jestli jsi nemel indexy v sql tabulkach, tak to je jasne :)
V podstate bys mel mit index na vsem, co pouzivas do WHERE nebo pro propojovani tabulek LEFT JOIN ... ON sloupec = sloupec.

 
Nahoru Odpovědět 20. února 7:34
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 14 zpráv z 14.