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:
|
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.
|
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:
|
A generování provedeme pomocí této rutiny:
|
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čí!
Diskuse k článku
-
25. listopadu 2012
-
30. srpna 2002
-
10. října 2002
-
4. listopadu 2002
-
12. září 2002
-
25. listopadu 2012
-
28. července 1998
-
31. července 1998
-
28. srpna 1998
-
6. prosince 2000
-
27. prosince 2007
-
4. května 2007