Statický web neznamená špatný web

Taky si myslíte, že web, kde není použitá našlapaná serverová technologie, nejmodernější framework a databáze (ideálně NoSQL), je zastaralý, neschopný a špatný? Že jedině dynamické generování obsahu dokáže vymáčknout z webových technologií nejvíc a statický obsah nemá budoucnost? A budete si to myslet i za pět let?

Slovo „statický“ má trochu smůlu.

Jeho protiklad, slovo „dynamický“, si spojujeme podvědomě s pokrokem, inovacemi, pohybem, zlepšováním, zkrátka s tím, co mnozí považují za lepší. Statické tak získává punc nevyvíjeného, tedy nemoderního, zastaralého, zkostnatělého… Ostatně i inzeráty jsou plné „mladých dynamických kolektivů, hledajících flexibilní kolegy“ (což znamená „jsme parta zmatlíků bez pevného vedení a chceme, abys dělal od nevidím do nevidím“), do „statického starého kolektivu“ nikdo pracovat nepůjde (a skutečné staré statické kolektivy se proto v inzerátech označují jako „zavedený tradiční zaměstnavatel, jistota stálého kariérního růstu“ – ale to odbočujeme).

Stejný efekt se projevuje i na webu. Každý, kdo rozumí technologii, ví, že technický rozdíl mezi „statickým“ a „dynamickým“ je jen v tom, jestli je stránka předem připravená a jen poslaná, nebo jestli ji server vytváří, až když o ni někdo požádá (a cache nechme stranou). Technicky je rozdíl mezi „statickým“ a „dynamickým“ webem jasný a pro konkrétní zamýšlené použití lze určit, zda bude statické řešení dostatečné, nebo zda bude nutné použít dynamické serverové generování (např. z databáze).

Jenže – zkuste zákazníkovi říct, že mu vytvoříte „statický web“. Statický je přece špatný, nemoderní, zastaralý, zkostnatělý – viz výše. Zákazník si žádá webu moderního, akčního, plného energie, dynamického… Hovory s některými zákazníky v tomto směru někdy připomínají legendární historku o přeskočení polovodičů a získáním náskoku před kapitalistickou cizinou rozvojem celovodičů.

Dynamický obsahem, statický technologií

To, co si zákazník představuje pod pojmem „dynamická webová prezentace“ přitom většinou neznamená, že stránky musí být nutně dynamicky generované. Nechme ale „dynamické prezentace“ ve všech ostatních významech stranou a věnujme se jen technické statičnosti / dynamičnosti.

Technický rozdíl mezi statickým a dynamickým webem má mnoho konsekvencí – například u statického webu bývají stránky sestaveny „někde jinde“, zatímco u dynamického jsou vytvářeny přímo na serveru (pro puntičkáře: cachování či oddělení generování od HTTP serveru na jednom stroji nechme stranou).

V začátcích webu nebylo dynamické generování obsahu takovou samozřejmostí, jakou je dnes, kdy na i těch nejlevnějších hostinzích naleznete alespoň PHP, častěji i další jazyky a nástroje. Vývoj technologie se projevoval na vývoji uživatelských očekávání, a ty zpětně ovlivňovaly technologie. Dovolte příklad z vlastní zkušenosti.

Jak se statické stávalo dynamickým

Když jsme v roce 2003 vytvářeli Bloguje.cz, bylo jedním ze stěžejních požadavků mít možnost nechat si vytvořené HTML stránky poslat pomocí FTP na jiný webový server. První verze tohoto blogovacího nástroje doopravdy generovala statický web – při napsání článku se vygenerovala stránka s článkem, přegenerovala se indexová stránka a nově se vygenerovalo RSS. Na konci se takto vytvořené stránky v případě, že bylo potřeba, přenesly via FTP na jiný server. Uživateli stačilo mít „běžný HTTP hosting“, bez databáze i bez možnosti spouštět vlastní skripty.

V té době byly i specializované blogovací nástroje, které fungovaly na domácím počítači, stránky vygenerovaly lokálně a poslaly je přes FTP na HTTP server – hosting. Jedním z takových nástrojů byl Easyblog od spoluautora Bloguje Libora Krayzela. V začátcích jsme dokonce uvažovali i nad tím, že by Bloguje byl jen dedikovaný HTTP hosting pro uživatele Easyblogu – tedy pro statické stránky generované tímto programem. Jenže doba přála dynamickým serverovým řešením, PHP začalo být stále dostupnější, stejně tak hostingy s databázemi, vznikaly webové nástroje pro blogování (s požadavky „PHP+MySQL“), a co víc – nabízely novinky, co offline statická řešení nabídnout nemohly.

Největší killing feature dynamických blogovacích systémů v té době byly komentáře. Čtenář měl k dispozici formulář, do něj napsal svůj příspěvek („Ahoj, koukni na můj blog“), odeslal a hned ho viděl na webu. Během půl roku musely mít komentáře všechny blogy, jinak…

Komentáře se ale u statického webu řeší těžko. Autor Easyblogu, donucen okolnostmi a uživateli k implementaci komentářů, to řešil oklikou přes vlastní server s diskusemi (články zůstávaly statické, komentáře se ukazovaly v iframe z jeho serveru) a nakonec to vyřešil v roce 2005 ukončením vývoje a podpory. Ve svém rozlučkovém článku se omlouval uživatelům a odkazoval je na „vyspělejší online systémy“.

Dynamická nutnost

Během dvou let se vývoj přehoupl od „nutnosti nabídnout statické generování obsahu“ k „nutnosti generovat obsah dynamicky“. Náhle se začalo generovat dynamicky snad vše a ten, komu URL končilo „.html“, byl out. Někde to mělo smysl – například u zmíněných publikačních systémů, e-shopů či webů, založených na intenzivní práci s databází. Ovšem někde to smysl nemělo a nemá.

Typický příklad: Stránky truhlárny, včelařství, penzionu, … Někteří tvůrci nacpali kompletní obsah, včetně obrázků a ikon, do databáze a vše posílal dynamicky přes ASP nebo PHP. Důvod (spíš „důvod“) pro takové řešení se vždycky našel. V nejhorším případě šlo vždy alespoň uvést na konci každé stránky informaci „Tato stránka byla vygenerována za 0.00076251744­8 sec“. Přitom by jednoduchá prezentace v prostém HTML stačila.

Ona stačí dodneška, a s rozvojem client-side technologií je čím dál tím míň důvodů (a „důvodů“) pro prosté informační weby používat dynamická serverová řešení. Většina věcí, pro které se na takových webech používá dynamické generování, spadá do jedné z následujících kategorií:

  1. lze ji vyřešit pomocí client-sice technologie
  2. lze ji obejít či nahradit podobným řešením
  3. lze je bez ztráty kvality zahodit

Webové prvky spadající pod bod 3 („Kdo má dnes svátek“, „Stránka byla vygenerována…“), by měly být vyhozeny tak jako tak. Pokud se vše ostatní, co řeší server, dá zařadit do kategorie 1 nebo 2, je na místě zvážit, jestli neudělat web statický.

Co budeme mít ze statického webu?

Co tím získáme? Statický web bude pravděpodobně o něco rychlejší než cachované řešení (a o hodně rychlejší než necachované). Čím míň technologií se na vytvoření stránky podílí, tím míň je v řetězci zpracování míst, které se mohou pokazit. No a nakonec je prostý HTTP server nenáročnější (a tedy levnější) než např. LAMP. (Námitka, že většina hostingů stejně nabízí LAMP, a úspora je tedy iluzorní, padá, pokud se se svou aplikací přestěhujeme do cloudů.)

Pro drobné webové prezentace, vizitky a podobné weby je statické serverové řešení dostatečné. Dokonce i pro klienty, co si chtějí „čas od času“ něco změnit – mohou, je k tomu spousta nástrojů, od prostého textového editoru po specializované nástroje, které dovolí upravit editable prvky a opět je nahrát na server. Přitom takové prezentace stále tvoří většinu požadavků na webdesignérská studia – ne každý chce dělat portál či katalog webů.

A co něco složitějšího, řekněme třeba zmíněné blogy? Šlo by nahradit dnes nejpoužívanější řešení první volby (HTTP+skriptovací jazyk+databáze+CMS) staticky generovanými HTML stránkami? Přišli bychom tím především o komentáře (a stranou ponechme otázku, nakolik by to byla ztráta)… Existuje ale řešení – mohli bychom použít nástroj typu Disqus nebo facebookové komentáře. Nevýhoda těchto řešení je v tom, že jsou komentáře do stránky vkládány až na straně klienta JavaScriptem, takže je vyhledávací roboty nezaindexují (a opět – nakolik je to škoda, si rozhodněte sami).

Nejrůznější kalendáře by šly opět řešit nějakým souborem na serveru (JSON), z něhož by si skript pro kalendář načetl data vydání článků. Upřímně řečeno jako největší problém vidím nutnost přegenerování celého obsahu v případě změny nějakých site-wide informací („Oblíbené odkazy“ třeba), což bude v případě plodného autora s mnoha sty článků zdlouhavé. Pokud se ale na blogu nechystáte dělat podobné změny často, nemusel by být se statickým generováním problém.

Je tedy čas oprášit Easyblog a upravit ho (třeba) pro webserver Amazon S3? Inu, proč ne, možné by to bylo – otázka je, jestli to zrovna u blogů, které dnes nabízí skoro každý, zdarma a v dostatečné kvalitě, zapotřebí. Ale co třeba z něj udělat dedikovaný nástroj pro úpravy editable obsahu v malých webových prezentacích, který by dostali do rukou klienti, co nepotřebují dynamicky generované weby…?

„Statický web“ jako by dnes chytal druhý dech. Mnohé webové aplikace mohou pracovat čistě na straně klienta a nové možnosti JavaScriptu tomuto trendu nahrávají. Dělat nad „obyčejným“ HTTP serverem kříž by tedy bylo předčasné. Předělávat weby horem pádem do statické podoby bez důkladného rozmyšlení by bylo samosebou nesmyslné. Ale je na místě si říct, že „statický web“ není rozhodně nehybný a zkostnatělý a své místo mezi webovými technologiemi rozhodně má.

Dnešní glosu berte jako takovou „tematickou předehru“ – brzy se na těchto stránkách podrobněji pobavíme o možnostech nástrojů pro generování statických webů (nanoc, Jekyll, yst, Hyde, Hakyll, Pagegen a další), o „publikování přes Git“ a o jiných věcech, spojených se „staticky generovaným webem“ – pozn.red.

Začal programovat v roce 1984 s programovatelnou kalkulačkou. Pokračoval k BASICu, assembleru Z80, Forthu, Pascalu, Céčku, dalším assemblerům, před časem v PHP a teď by rád neprogramoval a radši se věnoval starým počítačům.

Věděli jste, že nám můžete zasílat zprávičky? (Jen pro přihlášené.)

Komentáře: 28

Přehled komentářů

Naith Poznatky z praxe
tdvorak Re: Poznatky z praxe
Naith Re: Poznatky z praxe
tdvorak Re: Poznatky z praxe
tdvorak Re: Poznatky z praxe
Naith Re: Poznatky z praxe
František Kučera Re: Poznatky z praxe
rony spravodaj Re: Poznatky z praxe
Martin Malý Re: Poznatky z praxe
Martin Malý Re: Poznatky z praxe
tdvorak Re: Poznatky z praxe
Naith Re: Poznatky z praxe
karf Re: Poznatky z praxe
Dlouhán Re: Poznatky z praxe
Pepa statický weby určitě mají opodstatnění
tdvorak Re: statický weby určitě mají opodstatnění
Pepa Re: statický weby určitě mají opodstatnění
jlx Re: statický weby určitě mají opodstatnění
Pepa Re: statický weby určitě mají opodstatnění
kandidát přeražení pacek Re: statický weby určitě mají opodstatnění
TO JE JEDNO Re: statický weby určitě mají opodstatnění
Kalanis Re: statický weby určitě mají opodstatnění
František Kučera Generování statických webů
alancox Dynamický web může být statický web
MW Re: Dynamický web může být statický web
Viktor Re: Dynamický web může být statický web
sitnarf Tak nevím
sitnarf Výhody
Zdroj: https://www.zdrojak.cz/?p=3505