Autor Zpráva
Neas
Profil
Ahoj.
Mám dotaz ohledně cache: stručně vzato, podle toho, co o cachování vím, se jedná o nástroj, který má zrychlit webovou aplikaci, nejčastěji v případě, kdy se očekává veliká náročnost na databázi (hodně uživatelů naráz, složitější sql dotazy...). V jistém článku jsem se ale dočetl, že cache může aplikaci dokonce zpomalit, pakli že budu cachovat příliš mnoho informací, nebo když ke cache bude přistupovat příliš mnoho lidí naráz. Rád bych si v tom udělal trochu jasno - jak toto například řeší veliké servery, jako např. facebook? ten konkrétně má přes 800 milionů uživatelů, každou vteřinou musí být zobrazeno obrovské množství uživatelských profilů (nejen). Nepředpokládám, že jsou všechny informace o uživatelých vždy tahány z databáze, nicméně ke cache zde přistupuje obrovské množství lidí naráz a jestli je každý uživatel zapsán v cache, je v něm i obrovské množství uložených informací (tzn. jsou splněny obě podmínky pro zpomalení, viz výše). Jak to tedy funguje? Podle čeho bych měl posuzovat, zda mám informaci na webu cachovat, nebo tahat vždy z databáze?
(pozn. samozřejmě vím, že facebook apod. má k dispozici výkonné servery, kterým se těžko může rovnat hostingová služba za 30kč/měsíc, ale jde mi o princip jak poznat, kdy už je cache na škodu a kdy se z něj naopak stává mocná zbraň)

Děkuji
Alphard
Profil
Záleží na situaci. Často je postup takový, že se cachovat začne ve chvíli, kdy je to potřeba. Pak je důležité odhadnout cenu budování/použití cache proti provedení přímé akce. Rychlost čtení a zápis do souboru bude z pohledu dat spíše konstantní, rychlost databáze bude záviset na konkrétním dotazu. Frekvence přístupu na stránku je další proměnná.
Četl jste článek Granularita kešování?

Co konkrétně používá facebook a google jen tuším náznakem, ale ta řešení jsou pro běžné weby neúměrně komplikovaná, to není třeba řešit. Taková hranice normálního a velkéno webu je podle mě počet serverů (zrcadel), které jsou používány.
peta
Profil
Neas: Pouzivaji diskove pole?
Je mozne pouzivat serverove kesovani. Tam je mozne provadet indexovani a treba roztrizeni na top-pozadovane a ostatni.
Ale mnohem lepsi je, kdyz si program vytvari vlastni kes. Napriklad, pri ukladani informaci si je zapises do db a hned si vyrobis vsechny soubory, ktere bude uzivatel potrebovat. Vsechny odkazy pak vedes pres program, existuje v kesi? ne? vygeneruj. Protoze se muze stat, ze o kes prijdes. Pripadne muzes program zalozit na tom, ze vsechno v kesi je a tudiz uzivatel dostane jen html stranky.

Kdy se to pouzit neda? ankety, chaty, guestbook, fora a pod. Resp da, ale omezene. Vetsinou se predpoklada, ze chat bezi aktivne a pokazde vyrabet soubor by yla vetsi brzda nez to tahat z db. U fora by se to celkem dalo, predvyrobit prvni stranky a stranka=2 uz tahat z db, za predpokladu, ze malokdo bude klikat na stranku 2.
Vyhledavani. Ale i tam se da omezene kesovat nejcastejsi hledane dotazy.

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: