Generování dat na webu - Builder.cz - Informacni server o programovani

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:



PHP

Generování dat na webu

11. dubna 2001, 00.00 | Předgenerování dat je důležitý prvek při návrhu webu. Významně se urychlí nejen načítání celé stránky, ale i odlehčí zatížení celého serveru.

Před časem jsem v komentáři u článku o anketách slíbil, že se podíváme na to, jak data generovat do statických souborů.
Existuje samozřejmě celá řada metod a netvrdím, že ty, které zde uvádím, jsou jediné a správné. Ostatní ponechávám na čtenářích, vyjádřete se do diskuzního fóra...
Ukázky si budeme prezentovat v PHP, ale jde spíše o přístup, není problém je implementovat v jiném jazyce.

Kdy generovat

Generování je vhodné v případech, kdy máme skripty, které vykonávají složité dotazy (či volání funkce), ovšem málo kdy se změní hodnota výsledků dotazů (funkcí). Klasickým případem jsou zmiňované ankety. Uvědomte si, jak často se anketa zobrazí a jak často se opravdu hlasuje (tj. mění data). Jde o silný nepoměr.

Ukažme si fiktivní případ který se budeme snažit vyřešit generováním:

for($i=0; $i<3; $i++)
	echo "Tabulka ".getTable($i)." 
        má ".countTableItem($i)." položek
";


Sami vidíte, že příklad je triviální. Nechť funkce getTable() získá jméno tabulky pod určitým id. Tato funkce nebude zřejmě časově nikterak náročná. Horší to ovšem bude u funkce countTableItem, která má spočítat položky v tabulce. Časová složitost je úměrná počtu položek. Pokud se tento počet často nemění, není důvod, proč údaj zjištovat při každé návštěvě na stránce.
Zde se na chvíli zastavím. Zavedli jsme si předpoklad, že aby bylo generování vhodné, je třeba, aby se data v jistém časovém intervalu neměnila. Pokusím se tento časový interval dále upřesnit (i když je to logické). Záleží totiž na návštěvnosti serveru. Pokud se data mění jednou za minutu a vy máte návštěv pět za hodinu, nevyplatí se vám generování zavádět. Naopak jakmile stoupne návštěvnost na např. pět za sekundu, už je to na místě (záleží na aplikaci).
Dále je třeba brát v úvahu, zda je opravdu nutné mít na stránce aktuální data. Klasickým případem jsou chaty. Počet návštevníků se rychle mění. Není pak nutné zaznamenávat každou změnu, ale spíše jen orientační stav (uživatelé se průměrně hlásí každou minutu, nechme generovat sumu každých pět minut).
Jak provést vlastní generování?

Náhrada Echo

Budeme-li uvažovat o případu uvedeném na začátku stránky, nejjednodušším způsobem je nahradit výstup na stránky pomocí echa ukládáním do proměnné a posléze do souboru.

$out="";
for($i=0; $i<3; $i++)
	$out.= "Tabulka ".getTable($i)." 
        má ".countTableItem($i)." položek
"; /* ulozeni promenne out do souboru */


Uvedený postup je plně funkční, ovšem někdy nám nemusí vyhovovat jedna z vlastností - design je uveden přímo v kódu. A přitom při generování je možné oddělit design od kódu téměř zadarmo.

Náhrada regulárními výrazy

Generovaný kód lze uložit do speciálního souboru a místo, kam chceme vložit data, určit pomocí definovaných značek.
Ukázka takového souboru:

Tabulka _T0 má _C0 položek
Tabulka _T1 má _C1 položek
Tabulka _T2 má _C2 položek

A generování provedeme pomocí této rutiny:

/* nacteme obsah sablony do $sabl */
for($i=0; $i<3; $i++)
	{
	$sabl=ereg_replace("_T$i",getTable($i),$sabl);
	$sabl=ereg_replace("_C$i",countTableItem($i),$sabl);
	}
/* ulozit $sabl do souboru */

Závěr

Nastínili jsme si základní metody generování do souboru. Důležité je si uvědomit, že není příliš důležitá metoda, pomocí které generujete data (ta také záleží na aplikaci), ale fakt, zda data generujete, či nikoliv.
Když se podíváte na většinu českých webů, zjistíte, že to, o čem jste si mysleli, že je výpis z db, jsou předgenerovaná data.
Je jen na vás, abyste podobné přístupy aplikovali i na svém webu. Uvidíte, serveru se výrazně ulehčí!

Tématické zařazení:

 » Rubriky  » PHP  

 » Rubriky  » Web  

 

 

 

Nejčtenější články
Nejlépe hodnocené články

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: