Kešování v šablonovacím systému Smarty

S šablonovacím systémem pro PHP Smarty jsem se seznámil celkem nedávno v práci. Líbí se mi mimo jiné pro velmi snadné kešování výsledných stránek.

Pokud o Smarty nevíte vůbec nic, doporučuji vám výborný seriál SMARTY – šablonovací systém pro PHP od Štěpána Kouby. Dozvíte se v něm vše podstatné a zjistíte možná, že Smarty je skutečně ideální nástroj pro oddělení aplikační a prezentační vrstvy vašeho webového projektu.

Odpůrci Smarty vyčítají mohutnost a relativní pomalost, ale slovo relativní je skutečně na místě, protože když se budete zabývat kešováním stránek, které má Smarty vestavěné, tak můžete dosáhnout toho, že pro zobrazení dané stránky nebude třeba jediný SQL dotaz do databáze. Odpůrce, kteří nechápu na co vlastně je šablonovací systém dobrý, odkazuji na diskuse pod zmíněným seriálem.

Kešujeme se Smarty

Není to složité ani pro mě a to nejsem nijak zvlášť dobrý programátor. Sledujte krok za krokem komentovanou ukázku srciptu.

<?php
// Načteme knihovnu Smarty a vytvoříme nový objekt:
        require('Smarty.class.php');
        $smarty = new Smarty;

// Zapneme kešování:
        $smarty->caching = true;

// Kolik sekund kešujeme:
        $smarty->cache_lifetime = 3600;

// Adresář kde jsou uloženy šablony:
        $smarty->template_dir   = "/include/templates";

// Adresář pro ukládání kompilovaných šablon:
        $smarty->compile_dir    = "/tmp/templates_c";

// Adresář pro ukládání kešovaných stránek:
        $smarty->cache_dir      = "/tmp/cache";

// Unikátní číslo, nebo řetězec, pro konkrétní stránku:
        $spot    = $_GET['spot'];
        $rubrika = $_GET['rubrika'];

// Je požadovaná stránka uložena v keši?
        if($smarty->is_cached('spot.tpl', $rubrika."|".$spot)) {

                // Stránka je v keši tak ji zobrazíme:
                $smarty->display('spot.tpl', $rubrika."|".$spot);

        } else {

                // Stránka není v keši, načteme data:
                $query = mysql_query("SELECT * FROM clanky WHERE rubrika = '$rubrika' AND spot = '$spot';");
                $obsah = mysql_fetch_array($query);

                // Data pošleme do šablony:
                $smarty->assign($obsah);

                // Zobrazíme stránku:
                $smarty->display('spot.tpl', $rubrika."|".$spot);
        }
?>

Myslím si, že to není příliš pracné a pokud to spojíte s dalšími výhodami systému Smarty nebudete chtít už pracovat jinak. Doporučuji si do šablon posílat data pomocí $smarty->assign($obsah) v asociativních polích a pak se vám s nimi bude velmi dobře pracovat. Při ladění si také zapněte konzoli Smarty: $smarty->debugging = true.

Vyprazdňujeme keš

Někdy samozřejmě potřebujete kešované stránky vyprázdnit, například když někdo ke spotu přidá komentář.

<?php

// Keš můžeme vyprázdnit úplně celou:
        $smarty->clear_all_cache();

// Nebo jen konkrétní stránky:
        $smarty->clear_cache('spot.tpl', $rubrika."|".$spot);
        $smarty->clear_cache('rubrika.tpl', $rubrika);

// Nebo jen SKUPINU šablon, například obě stránky výše:
        $smarty->clear_cache(NULL, $rubrika);
?>

Máte tedy celou keš ve svých rukou a myslím si, že zrychlení vašeho webu za tu trochu námahy stojí a nakonec to skutečně není nic složitého.

A to je konec…

Možná jste si všimli, ale spíš ne, že tento weblog po několika publikačních systémech zakotvil na mém, vlastnoručně vyrobeném blogovadle. Pohání jej Smarty, šablony kešuju 24 hodin. Dotazy do databáze se proto provádějí jen jednou denně. Vlastně jste na weblogu se statickými stránkami.

Dalším pohonem blogu je výborné Texy!, kterému tímto dávám kredit ;-)

| | Články | Trvalý odkaz | Komentáře (45) | Del.icio.us


Komentáře:

[1] llook | 21.11. 2005, 7:48

Pak jsou ještě odpůrci Smarty, propagující PHP jako šablonovací jazyk. Třeba místo {$promenna} psát <?=$promenna?> a místo {$foo|bar} psát <?=bar($foo)?>.


[2] Llaik | 21.11. 2005, 9:25

Jiste, ti totiz tvrdi, ze je cilem je od sebe rozdelit aplikacni a zobrazovaci logiku.
A je relativne jedno, jak toho docilit.

Btw – znam projekty, kde je pouzit sablonovaci system a zasada rozdelenych logik dodrzena neni – ze Smarty sablon se tam volaji fce sahajici do db apod.


[3] Jakub Vrána | 21.11. 2005, 10:01

Problém použití PHP jako šablonovacího systému spočívá v tom, že uvnitř šablon lze provádět i věci, které tam nepatří. Grafik tak může celou aplikaci velice snadno rozbít.

Tento problém se v omezené míře týká i Smarty – je zkrátka příliš silný.

Proto používám HTMLtmpl – ten je zase o něco slabší, než bych chtěl, ale dá se s tím žít.


[4] Jirka Ch | 21.11. 2005, 12:15 | jiri@chomat.net

[1], [2] Já jsem asi jenom nevyjmenoval všechny typy odpůrců :-)

[3] PHP jako šablony bych asi nepoužíval, to se vztahuje i k [1], ale pokud dokážete grafika uhlídat aby do Smarty nepsal PHP tak budete spokojeni všichni.
Já jsem jen chtěl poukázat na to, že s pomocí Smarty lze celkem jednoduše vyřešit kešování výsledných stránek.


[5] johno | 21.11. 2005, 14:06 | johno@jsmf.net

Môžem sa opýtať aká je tá hrozná výhoda SMARTY oproti normálnemu PHP kódu?

Mal som tú česť robiť so SMARTY a je to IMHO zbytočne prekomplikovávanie. Učiť sa syntax navyše síce nie je taký problém, ale načo, keď to netreba.

Pokial programátor nie je prasa, tak aplikačnú logiku nebude miešať s prezentačnou vrstvou či už smarty má alebo nie. A naopak ak je prasa, tak ho smarty len trochu spomalí. Logicky sa mi z toho implikuje, že smarty je pre prasata, ale nechcem tu rozpútať flamewar. Každý nech používa, čo mu vyhovuje. Ja len chcem, aby ste ma ako bývalého používateľa presvedčili.


[6] Jirka Ch | 21.11. 2005, 14:43 | jiri@chomat.net

[5] Smarty je pro prasata? Pak se k nim celkem hrdě hlásím.

Pokud pracuje na projektu víc lidí tak je to dokonalý prostředek pro oddělení aplikační a prezentační logiky systému.
Argumenty které zazněly, před dvěma lety v diskusi pod prvním článkem zmíněného seriálu, platí i dnes.


[7] Llaik | 21.11. 2005, 14:46

Vyhoda Smarty oproti PHPku? Jedina – subjektivne lepsi citelnost. Ale rikam – subjektivne. A take spis k tomu dostanes grafika a hlavne ti v tom grafik mene zaprasi, nez v php.

Pak samozrejme pokud se nebudeme bavit o Smarty, ale treba o Tengu, tak oproti phpku je velkou vyhodou i vykon. Coz muze platit i u Smarty, pokud ve sve aplikaci muzes vyuzit cachovani vystupnich stranek. Nez si bastlit vlastni v phpku, proc jen neprehodit nastaveni ve Smarty?


[8] Jirka Ch | 21.11. 2005, 14:55 | jiri@chomat.net

[7] Tak tenhle názor podepisuji celý, hlavně druhý odstavec :-)


[9] johno | 21.11. 2005, 16:04

[6] Ehm, skús si ešte raz prečítať, čo som napísal. Ja nehovorím, že odelenie aplikačnej logiky od prezentačnej vrstvy je blbosť. Hovorím, že SMARTY sú prekomplikovávanie vecí, ktoré sa dajú riešiť jednoduchšie. Skús mi napísať nejaký príklad templatu, ktorý sa v čistom PHP zapisuje zložitejšie.

[7] Mne sa subjektívne lepšie číta PHP.

Čo sa týka Tengu, tak je to rýchlejšie ako predkompilovaný template? Napríklad pomocou bcompiler alebo niečoho iného? Bavme sa ale o SMARTY, Teng článok ani môj komentár nespomínal.

No a spraviť si cachovanie na template engine je záležitosť tak na 5–10 riadkov. Keď spoznáš maličký balík PEAR::Cache_Lite samozrejme.

Takže sa opäť pýtam: Kde je tá výhoda SMARTY oproti klasickému PHP kódu?

PS. V tých komentároch pod článkom na Intervale som nič poriadne nenašiel. Ale nečítal som to extra pozorne, to sa priznávam.


[10] Llaik | 21.11. 2005, 16:16

1] PEAR? Takova ta robustni krava? Tfuj, bame se o necem jinem :)

2] Teng – bohuzel nebyl zminen, tento apachovsky modul je preci jen sikovnejsi, nez vetsina beznych sablonovacich systemu

3] aaa, Teng mi pripomina :) pri pouziti sablon je vyrazne vyssi pravdepobnost, ze syntax neni pomrvena, tudiz je mozne sablonu pouzit i z jineho programovaciho jazyka, nez je php (v praxi jsem na to uz narazil – potreboval jsem kus stranky generovat jak z php, tak z cecka)

4] pokud chci mit „neprustrelny“ php zpais, musim promenne vypisovat pomoc <?php echo $bla;?>, coz je oproti {$bla} opravdu hure citelne, at se ti to libi, nebo ne :)

5] vyhoda Smarty je psychika – at se ti to libi, nebo ne, tak ve Smarty se mene prasi a je jednodussi udrzet rozdeleni aplikacni a prezencni logiky. Pokud delas sam, tak se te to netyka, pokud na tom dela vice lidi, je to hola pravda.

6] Vyhoda Smarty je pak ta, ze ho snaze vezme neprogramator. Syntax je jednoducha, hlida te, nedovoli ti jen tak zasahy mimo.

7] zakladem je rozdeleni aplikacni a prezencni logiky, pokud to zvladas v PHPku, neni duvod ti vnucovat Smarty. Z me zkusenosti: drtiva vetsina lidi to v phpku nezvlada. Casto ujede treba: echo "<div span=\"neco\">"; coz je pruser, protoze uz si to v zivote nevygrepnes. V sablonovacim systemu se ti toto nestane.

8] proc pouzivat PEAR? Neni to jen nejaky predkousany kod? K cemu? Neni snazsi a rychlejsi si napsat tech par radku primo u sebe v phpku a nezabivat se zpomalenim? Nebo je vyuziti PEARu transparentnejsi a efektivnejsi (co do lidske prace)? Narazim na moznou existujici souvislost se Smarty… :)

9] aby nevznikla mylka – Smarty nepouzivam a primarne vzdy chci rozdelit aplikacni a prezencni, pokud se to zdari, je mi relativne jedno, jak k tomu doslo :)


[11] Jirka Ch | 21.11. 2005, 16:17 | jiri@chomat.net

[9] Já jsem to četl. Pokud ti Smarty nevyhovuje tak je nepoužívej a možná tedy nepoužívej ani žádný jiný šablonovací systém.

Tu diskusi doporučuji přečíst znovu, skoro pod každým článkem se řešilo to samé. Otevírat to znovu je nošení dříví do lesa.


[12] Llaik | 21.11. 2005, 16:17

Ha, v bode 7 jsem omylem pouzil html znacku :) zkusim to znovu, melo tam byt:
echo "<div span=\"neco\">";
snad to teed projde… zkratka jde o echo neceho s escapovanymi uvozovkami, ktere rozhodi text tak sikovne, ze se jednak spatne edituje, a hlavne nejde progrepovavat. Velice casty vypisu html kodu z phpka. Casto to ujizdi (co koukam do kodu cizich lidi :))


[13] Jirka Ch | 21.11. 2005, 16:22 | jiri@chomat.net

[12] Tady funguje Texy! syntaxe, takže se dá zapsat cokoliv. Oba komentáře jsem upravil


[14] Llaik | 21.11. 2005, 16:24

Texy? Proc to, neni to zbytecne? Proc to vse rovnou nezapisovat v HTML?
Citelnost? Jednoduchost?
Subjektivni!

PS: Omluva, tuto narazku jsem si nemohl nechat ujit :)


[15] johno | 21.11. 2005, 16:27

[11] Ja šablónovací systém používam. Volá sa PHP. Je rýchly, nemusím sa učí nejakú novú syntax, dá sa jednoducho cachovať a viem v ňom spraviť všetko. SMARTY som sám v minulosti používal a nevidím najmenší dôvod sa vrátiť späť.

Ty si zatiaľ nepovedal ani jeden logický dôvod prečo je to lepšie.

Jediné čo som sa dočítal je to, že je tam milión funkcií, ktoré ti ulahčia prácu pri generovaní SELECT tagov a tak. To zatiaľ beriem ako jediný pozitívny argument. To je akože tá krása SMARTY, alebo je v tom niečo viac?


[16] Jirka Ch | 21.11. 2005, 16:30 | jiri@chomat.net

[14] Není to zbytečné. Jde o přehlednost textu, jeho jednodušší úpravy, očekávatelné chování a o blbuvzdornost, viz V čem je Texy! lepší?.


[17] Jirka Ch | 21.11. 2005, 16:33 | jiri@chomat.net

[15] Johno díky za názory, ale pokud je to opravdu tak jak píšeš tak tenhle článek nebyl určen tobě. Netoužím nikoho přesvědčovat o výhodách a nevýhodách šablonovacích systémů. Až budeš pracovat na projektu kde bude víc –grafiků– ++designérů++ než programátorů tak uvidíš sám.


[18] johno | 21.11. 2005, 16:43 | johno@jsmf.net

[10] Na PEAR by som nenadával pokiaľ si neskúsiš benchmarky. Pobaviť sa o tom môžeme po icq a mailom. Rád ťa vyvediem z omylu, v ktorom som žil aj ja.

AD 4 bod: Toto beriem.
AD 5 bod: Je to o tom či sú tvoji kolegovia prasatá. Prasa ale SMARTY zastaví len na chvíľu. To som písal.
AD 7 bod: Prečo echuješ tagy PHP? Echuj iba premenné.

[17] Ok, ja fakt končím toto nemá zmysel. Grafik sa nemá čo sa hrabať v kóde.


[19] Llaik | 21.11. 2005, 16:46

18] no prave! Grafik se nema co hrabat v aplikacni logice, ma se hrabat v prezencni (ok, nazveme ho pro tuto potrebu jako web codera).

O tom to je – jeden clovek to nakresli, druhy napise prezencni logiku (HTML), treti napise aplikacni (treba PHP).

O tom je Smarty.

ad PEAR: prave ze jsem videl profilery. Jen naincludovani vsech tech PEAR knihoven stoji furu casu, nemluve o vytvareni pripadnych instanci objektu… ale to je celkova slabina PHPka. Kazdopadne ja nikdy nemel duvod PEAR pouzit, neobsahoval nic, co by mi praci zjednodusilo.

Konci :) dulezita je shoda na tema rozdeleni aplikacni a prezencni logiky. Neni pak uz jedno, jak to kdo implementuje? Faktem je, ze pokud mas html codera co do phpka nevidi, tak mu radeji sverim nejake sablony, nez php kod.


[20] Jirka Ch | 21.11. 2005, 16:46 | jiri@chomat.net

[18] Použil jsem slovo „grafik“ nepřesně, měl jsem na mysli výraz designér. Teď už si snad rozumíme.


[21] Llaik | 21.11. 2005, 16:47

btw: na odpovezeni tech bodu 1–8 kasli, kdyz jsi skoncil. Krome toho ten clanek ani imho nema ucel nekomu Smarty vnucovat. Smarty je jen cesta, ne cil.


[22] johno | 21.11. 2005, 16:52

[19] Ale ja používam šablóny. Len je to PHP kvôli cyklom a podmienkam + HTML.

Si si istý?
http://www.sitepoint.com/…showpost.php?…

Tie tvoje výsledky by som rád videl. Môžeš mi to poslať na mail?

PEAR má aj sračkové knižnice, ale niečo fakt stojí za to.


[23] Llaik | 21.11. 2005, 16:59

neposlu, musel bych je generovat :)
zkus si to sam: http://xdebug.org

jinak jisty si jsem :)

tak me tak napada: jak predavas promenne z aplikacni do prezencni casti? Spolehas se na global? Nebo pouzivas nejakou fci?
Co jsem videl kody, ktere oboje drzeli v phpku, tak se spolehaly na global. Clovek pak procital aplikacni cast a netusil, ktere promenne vstupuji do prezencni casti, a ktere jsou jen v aplikacni. Ale to je spis o stylu zapisu.

Jinak rikam – jsou to dve ruzne cesty, hlavne, ze maji stejny cil.

btw – tve projekty byly vzdy cele v phpku? Zadny python/ruby/cec­ko/bash?


[24] tark | 21.11. 2005, 18:16

Mno, já se právě chystám dělat jeden projekt, kterej by mohl pokračovat i komerčně a furt právě uvažuju, jestli mám nebo nemám tam dávat šablony.

Ono se to lehko řekne – dej tam smarty, ale on se potom člověk musí zabývat LGPL a dalšími kravinami (nic ve zlém).

Každopádně, abych jen nekritizoval. Zkusím je! Uvidíme, co z toho vznikne, třeba se chytnu, i když, moc šancí tomu nedávám. Ono i includovat 65kB navíc…


[25] tark | 21.11. 2005, 18:16

Teda šablony .. nepřesně jsem se vyjádřil → šablonovací systém (smarty, templatepower…)


[26] tark | 21.11. 2005, 18:19

Mimochodem → mohl bych ještě dát jeden návrh pro tvé blogovadlo?

  • Co implementovat FSHL? Texy! už s ním počítá, takže by to tolik nebolelo a přecejen to uživatelům víc prospěje…

[27] johno | 21.11. 2005, 19:25 | johno@jsmf.net

[23] Jaký global? Normálne mám triedu Template a cez metódu assign($name, $value) si tam nabácham čo chcem. Potom zavolám render() a cez output_buffering si to vysosnem. V konštruktore samozrejme definujem súbor, kde je PHP template.

http://johno.jsmf.net/…/example.php
http://johno.jsmf.net/…late/source/

Dorobiť cache je záležitosť vytvorenia triedy CachedTemplate, ktorá bude asi podobne „zložitá“ ako táto.

Cieľ je jasný. To som písal už v mojom prvom komentári. Netreba tu opakovať prečo separovať logiku.


[28] Jirka Ch | 21.11. 2005, 23:46 | jiri@chomat.net

[27] Johno díky, tohle téma jsme myslím vyčerpali. Tenhle článek byl pro někoho kdo ví na co jsou šablonovací systémy dobré a snažil se ukázat jak lze jednoduše kešovat výsledné stránky.

[26] Tarku díky za komentáře a za tip, možná se k tomu dostanu.


[29] tark | 22.11. 2005, 14:21

[28] Pěkný, jen bych vyhodil ten background, nehodí se k tomu .. A možná bych v PHP kódech nepoužíval háčky a čárky, FSHL je nemá rádo (i když, ony ani v kódu nemají co dělat) ;-)


[30] Jirka Ch | 22.11. 2005, 14:57 | jiri@chomat.net

[29] Vidíš, mě se celkem líbí. FSHL diakritiku zvládlo bez problému a k tomu nevím proč bych je v komentářích nemohl používat, zvlášť pokud jde o příklady v článku.


[31] tark | 22.11. 2005, 15:27

V Opeře mi nejedou český znaky v tom kódu, takže je to proto :-)


[32] Jirka Ch | 22.11. 2005, 17:41 | jiri@chomat.net

[31] Opera/8.51 (X11; Linux i686; U; en) – vše je OK. Některé znaky (á,í,…) převedlo FSHL do entit, ale korektně.


[33] tark | 30.11. 2005, 21:26

Opera 8.51, WinXP nejede :D


[34] tark | 30.11. 2005, 21:26

Ale ona to kurví všude… ;)


[35] tark | 2.12. 2005, 23:11

Takže jsem se rozhodl – Smarty v mým projektu budou, dík za tip :-)


[36] dgx | 11.12. 2005, 3:01

Smarty je skutečně ideální nástroj pro oddělení aplikační a prezentační vrstvy vašeho webového projektu

A tady je zakopán pes. Smarty neslouží k oddělení aplikační a prezentační vrstvy. To je jen silně rozšířený mýtus, kterému podléhají bohužel i autoři šablonovacích systémů.

Oddělit aplikační a prezentační vrstvu je čistě na programátorech (a je to v jejich zájmu).

Smarty (+ podobné systémy) jsou záležitost pouze prezentační vrstvy. Tu se však snaží rozdělit na tyto dvě části:

  1. prezentační logiku
  2. šablony + ořezanou prezentační logiku

To rozdělení není přiliš šťastné a třeba tak banální požadavek jako „zobrazit číslo z proměnné, pokud je větší než 30 tak červeně“ položí spoustu šablonovacích systémů na lopatky. Uživatel takového systému si s tím láme hlavu, studuje syntax, zatímco neuživatel prostě přidá do kódu jedno if () echo ‚..‘ a má hotovo.

Šablonovací systém může být dobrý sluha i zlý pán. Dobrý sluha tehdy, pokud slouží ke zpřehlednění prezentační vrstvy. Zlý pán, pokud ji podivně rozděluji na ony body 1) a 2).


[37] Jirka Ch | 11.12. 2005, 17:00 | jiri@chomat.net

Oddělit aplikační a prezentační vrstvu je čistě na programátorech (a je to v jejich zájmu).

S tímhle tvrzením souhlasím a s tím upřesněním výše také. Moc jsem zjednodušoval. Jinak to s tím číslem (červeně, pokud je větší než 30), není se Smarty pochopitelně nic složitého.


[38] Radek | 11.1. 2006, 16:56 | info@seo-expert.cz

Smarty taky používám, konkrétně u internetových obchodů, problém ale nastává s tím, že je to neuvěřitelně pomalý:( Cache i kompilovani jsou zapnute, ale hodne funkcni co SMARTY pouziva (napr. math) vyjde rychleji delat to v phpcku nez vyuzivat kodu smarty. Kez by to slo zrychlit:)


[39] Jirka Ch | 11.1. 2006, 17:48 | jiri@chomat.net

[38] Možná jak které funkce. Například tato stránka (lokálně na notebooku), je na tom s rychlostí docela dobře. Převzato z Smarty konzole.

Nenakešováno, SQL dotazy se provádějí, stránka se ukládá do keše:

  • spot.tpl (0.26524) (total)
    • a_header.tpl (0.02452)
    • a_comment.tpl (0.02927)
    • a_footer.tpl (0.03864)

Stránka je v keši, žádné SQL, rovnou zobrazujeme:

  • spot.tpl (0.00010) (total)

První příklad nastává jen jednou denně, nebo při vložení nového komentáře.


[40] Pino | 22.2. 2006, 19:36

o kolik se to asi zpomaluje


[41] Jirka Ch | 23.2. 2006, 10:32 | jiri@chomat.net

[40] Viz komentář [39]. Hodnoty v závorkách jsou ve vteřinách.


[42] Nick | 23.4. 2006, 13:01 | nick@zelpage.cz

Přeji pěkný den,
koketuji s myšlenkou použít Smarty na svůj projektík http://www.zelpage.cz. Měl bych dotaz ohledně cache – přináší Smarty+Cache nějaký nárůst výkonu oproti klasickému způsobu? Hlavní strana by se v cache musela aktualizovat dost často, protože přibývají krátké zprávy, u nich se mění počet komentářů, v levém sloupečku přibývají fotky a v pravém export z fóra. Navíc po přihlášení se místo formuláře zobrazí statistika uživatele. Jde mi o to, zda se vyplatí předělat komplet web do šablon, nebo zda mám zůstat u stávajícího způsobu, který je dostatečně rychlý.

Děkuji za radu.
L.K. – Nick

PS: Píšu to sem, možná by to mohla být inspirace pro jiné, kteří nad podobnou otázkou přemýšlejí ;-)


[43] Jirka Ch | 23.4. 2006, 21:23 | jiri@chomat.net

[42] Nevím jestli zavádět šablonovací systém jen kvůli kešování je dobrý nápad. Ve vašem případě bych zvážil možnost kešovat „jen“ SQL dotazy. Pokud vám stávající způsob vyhovuje tak si myslím, že by to mohlo být lepší řešení.


[44] Nick | 24.4. 2006, 0:19 | nick@zelpage.cz

Kdepak, jen kvůli kešováni to nechci předělávat. Za šablony jsou 4 bonusové bodíky v hodnocení semestrálního projektu :-D
Hlavním důvodem je pak možnost vytvořit si několik různých šablon a čtenáři by si tak mohli sami zvolit, která šablona jim vyhovuje nejlépe, případně by si čtenář mohl sám vytvořit nějakou vlastní. Otázka, zda by to nebylo na úkor rychlosti. Nyní je na webu zapnutá komprese a tak se jednotlivé stránky načítají velmi rychle.


[45] Jirka Ch | 24.4. 2006, 0:55 | jiri@chomat.net

[44] To je určitě na delší debatu :-) případně mi klidně napiš(te?) na email. Ona i ta šablona o které píšeš se dá řešit jen pomocí CSS a nemusí být vůbec třeba sahat do HTML kódu. Kešování SQL nebo HTML, to je jedno, urychluje sestavení výsledné HTML stránky a tam ti zapnutá komprese nijak nepomůže.