Zrychlovanie aplikacie – cache

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
drick
Člen | 61
+
0
-

Ahojte. Snazim zas o cosi zlepsit vo vyvoji webovych aplikacii a tak som sa zacal zaoberat otazkou rychlosti nacitavania stranky a cache-ovania. Pozrel som si zopar tutorialov na internete a nie je mi celkom jasne ci tomu rozumiem.

Zaujimalo by ma, ci mi niekto neviete poslat nejaky link na projekt (napr. na githube), kde je pekne ukazane cache-ovanie presne tak, ako sa to ma robit. Resp. nebol by niekto ochotny zazdielat nejaky takyto projekt? Nemusi byt ani nijak extra rozsiahly..

Dakujem.

Landsman
Člen | 152
+
0
-

@drick Tak všeobecně cachovat velké databázové dotazy u kterých si to můžeš dovolit. Spíše by jsi měl specifikovat, co přesně tě v rychlosti trápí a pak to řešit. Takhle obecně je to těžké.

drick
Člen | 61
+
0
-

@Landsman Diky za odpoved.

Tak viacmenej by som iba potreboval vidiet niekde v nejakom projekte vyuzitie cache-u. Kde vsade sa to da vyuzit, ako spravne aby som dosiahol co najrychlejsie nacitavanie stranky.

CZechBoY
Člen | 3608
+
0
-

Nejlip tam co te brzdi a nejde uz jinak zrychlit.

hitzoR
Člen | 51
+
+1
-

Já se obecně snažím cachovat třeba všechno, kde by bylo potřeba při každém požadavku tahat z DB stejná data. V mojem případě třeba seznam jazyků, formáty data a času, položky menu atd. Pokud je uživatel přihlášený, tak třeba data o jeho profilu. Tímhle bych určitě začal.

Pak se můžeš dostat k pokročilejším věcem, které dost závisí na tom, jak se aplikace využívá. Třeba cachovat články a různé výpisy na homepage, kde je logicky největší návštěvnost. Invalidaci pak řeším tak, že na entitu článku (a i ostatních věcí, které se na homepage můžou měnit) v ORM mám pověšenou nějakou cachovací třídu, která po uložení do databáze zinvaliduje a znova vygeneruje cachovaný obsah.

drick
Člen | 61
+
0
-

Diky chalani. Kazdopadne, ak by ste nasli nejaky volne dostupny projekt na internete v Nette, hodte sem prosim link.

Felix
Nette Core | 1247
+
0
-

Muzes se podivat treba na Componette.

http://bit.ly/cmtte

GEpic
Člen | 566
+
0
-

drick napsal(a):

@Landsman Diky za odpoved.

Tak viacmenej by som iba potreboval vidiet niekde v nejakom projekte vyuzitie cache-u. Kde vsade sa to da vyuzit, ako spravne aby som dosiahol co najrychlejsie nacitavanie stranky.

Tam kde se neustále dokola načítají stejná data ve stejné podobě, může to být na úrovni modelu a cachovat primitivní data (řádky tabulky), nebo v aplikaci (business logice) při zpracování dat nějakým složitějším algoritmem.

Není to jen o tom data za každou cenu nacachovat, ale také si v té cache udělat pořádek, neukládat zbytečně velké bloky pokud není potřeba, ale cache si inteligentně rozdělit, aby ses neomezoval v následném použití dat.

drick
Člen | 61
+
0
-

Ok, chalani, dakujem vsetkym. I ked stale mi chyba nejaky kvalitny kod, z ktoreho by som sa to priucil a videl na priklade.

CZechBoY
Člen | 3608
+
0
-

Zalezi co chces videt. Aplikaci s 1000 navstevama za minutu? Nebo narocnou operaci na 10 minut?
Jestli nevis jak v Nette rozchodit cache tak mrkni do dokumentace.

drick
Člen | 61
+
0
-

@CZechBoY do dokumentacie som pozrel a tym zakladom rozumiem. Neviem vsak kde v praxi by som mal cache vyuzit.Teda, mam nejaku predstavu, len som hladal nejaky projekt, kde je cache vhodne a spravne vyuzity, to je vsetko..

pesovo
Člen | 1
+
0
-

Ahoj,

já třeba přistupuji k ukrutně pomalé webservice od klienta. Odezva je klidně i pět vteřin, takže si data ze servisy uložím do cache a pracuji s ní.

public function getData()
{
	$data = $this->redis->get(self::CACHE_DATA);
	if ($data === null) {
		$data = $this->ws->getData(); // 5s
		$this->redis->set(self::CACHE_DATA, $data);
	}
	return $data;
}

Je to jen takový nástřel, pro představu. Snad jsem správně pochopil tvůj problém :)

drick napsal(a):

@CZechBoY do dokumentacie som pozrel a tym zakladom rozumiem. Neviem vsak kde v praxi by som mal cache vyuzit.Teda, mam nejaku predstavu, len som hladal nejaky projekt, kde je cache vhodne a spravne vyuzity, to je vsetko..

Michal Hlávka
Člen | 190
+
0
-

drick napsal(a):

@CZechBoY do dokumentacie som pozrel a tym zakladom rozumiem. Neviem vsak kde v praxi by som mal cache vyuzit.Teda, mam nejaku predstavu, len som hladal nejaky projekt, kde je cache vhodne a spravne vyuzity, to je vsetko..

V tech videii jsou priklady z praxe :)

drick
Člen | 61
+
0
-

@pesovo No toto je super. Nie je to náhodou nejaký open-source projekt? Presne niečo takéto (aj s použitím redisu) som hľadal. Dík.

@emptywall Hej, díky .. prebehol som si ich, ale to už sú skôr pokročilejšie problémy, resp. moc mi to nepoholo.