Zpět na úvodní stránku

Kešování webu

V Nastavení > Technické nastavení lze zapnout kešování. Co to je?

Těžko říct. Každopádně, co se při zapnutém kešování děje? Uživatel klikne na nějaký odkaz. Systém zareaguje a protože ví, co po něm uživatel chce (prohlédnout si archiv, přečíst text,...), zkontroluje složku s kešovanými soubory, zda mezi nimi náhodou není právě to, co chce. Jestli už tam někdy dříve tento obsah neuložil. Pokud ne, vše proběhne jako obvykle, systém zpracuje požadavek, ale nakonec si vygenerovanou stránku uloží. A pokud opět někdo klikne na stejný odkaz, systém už v paměti nalezne uložená data a aniž by se o něco staral, použije tyhle a pošle je prohlížeči.

Ušetří tím čas, výkon serveru, databáze... a tak to probíhá s většinou dynamicky generovaných věcí. Texty i s komentáři, archivy všech měsíců,... dokonce kešuju i fotoalbum :)

Je to trochu nesrozumitelný, viď?

Snažil jsem se systém psát tak, aby zbytečně nezatěžoval server. Kešování je určité rešení. Po zapnutí kešování dojde k uložení všech možných kousků html, které předtím systém vygeneroval, do složky /cache/. Při každém načtení webu se pak systém dívá, zda v této složce nemá ten kousek kódu, který se právě chystá zpracovat. Pokud ano, načte jej a hned jede dál. Pokud ne, musí proběhnout skript a tento kousek kódu se vygeneruje a následně uloží do oné složky. Od onoho okamžiku se bude jen načítat. Server a databáze budou mít méně práce... a web bude rychlejší. Patrně.

Jen tak jsem si teď zkusil zjistit, kolik dotazů na databázi odešle úvodní stránka webu (samozřejmě moje) ... je to 32 dotazů!!! A se zapnutým kešováním? Pokles o dvě třetiny na 12 dotazů. To není špatný.

Počet dotazů lze omezit odstraněním blbostí ze šablon... poslední texty, komentáře, přístupy odjinud, náhodná fotka... i to pomůže.

Všechno ale není dokonalé a kešování je hodně problémové. Proč? Jednoduchý příklad: někdo přijde na tvůj web a přečte si text. Vytvoří se keš textu. Přijde-li znovu, tak systém ve složce keše najde uložená data a načte ty, místo aby vytvořila nová. A ty mezitím v administraci napíšeš text a uložíš jej. A hups, na úvodní stránce je pořád ten starý text... ano, protože systém má jednoduché pravidlo: najdu-li v keš-složce data textu, který má být načten, pak se na nic neptám a zobrazím je. Jenže nedojde ke komunikaci s databází, systém tedy nezjistí, že jsi mezitím napsal nový text. Při každé akci v administraci a pod se tedy snažím mazat soubory keše, které s akcí souvisejí. Napíšeš-li nový text B, pak musí dojít ke smazání keše archivu, protože v něm je uveden jen text A. Atd... a věř mi, že jsem určitě nevychytal všechny kombinace a kešování je tedy zákonitě problematické.

Ke smazání veškeré keše dojde při odhlašování z adminsitrace.

Používání kešování doporučuju opravdu jen v nejnutnějších případech, jako je různé omezení serveru a pod.