Jak web technicky funguje
Co se stane mezi napsanou adresou do prohlížeče a vykreslenou stránkou.
Zadáš do prohlížeče adresu, zmáčkneš Enter a za zlomek vteřiny koukáš na stránku. Mezi tím se stane překvapivě hodně věcí. Abych mohl v dalších kapitolách používat technické termíny a nebyl to jen šum, zkusím je tu stručně vysvětlit.
Přijde mi, že nejlíp se to pochopí, když si projdeme jeden jediný požadavek na zobrazení webu. Od napsané adresy k pixelům na obrazovce.
Z adresy se musí stát server
Napíšeš firma.cz do prohlížeče. Jenže počítače mezi sebou nemluví jmény, mluví čísly. Někdo to jméno musí přeložit na adresu konkrétního serveru. Tomu „někomu" se říká DNS a je to telefonní seznam internetu. Doménu přeloží na IP adresu počítače, který obsah vydá. Přesnou definici má slovník, detail o záznamech a doménách DNS a domény.
Důležité je, že DNS je vlastní vrstva. Může se rozbít sama o sobě. V říjnu 2016 shodil útok jednoho DNS poskytovatele Twitter, Netflix i Spotify naráz, i když jejich servery celou dobu běžely. Jen je nešlo najít. Když web nejede, „která vrstva spadla" je první otázka, na kterou hledáme odpověď.
Prohlížeč se ptá, server odpovídá
Teď prohlížeč ví, kam se obrátit, a pošle požadavek (request): „dej mi tuhle stránku". Server odpovídá (response): pošle zpátky obsah. Tahle výměna je celý web v kostce. Klient se ptá, server odpovídá. A pozor na to slovo klient. Ve světě webu to není člověk, ale jeho prohlížeč.
Každá odpověď serveru začíná číslem. To číslo říká, jak to dopadlo, a potkáš ho častěji, než bys čekal.
Odpověď má vždycky číslo
Číslům se říká HTTP status kódy a dělí se podle první číslice. 2xx znamená úspěch, 3xx přesměrování, 4xx chybu na straně klienta, 5xx chybu na straně serveru. Stačí ti pár konkrétních:
- 200 OK — všechno klaplo, stránka je v odpovědi. Tohle vidíš pořád, jen o tom nevíš.
- 404 Not Found — server tu adresu nezná. Klasické „stránka nenalezena".
- 301 a 302 — přesměrování. Server říká „tady to není, jdi jinam" a prohlížeč to udělá sám, bez ptaní. Skončíš na jiné adrese, aniž bys cokoli klikl.
- 5xx (třeba 500) — chyba serveru. Požadavek byl v pořádku, ale server ho neuměl zpracovat. Tady je problém na druhé straně, ne u tebe.
Status kód je důležitý. Pro vyhledávač je to zásadní věc (víc v SEO). Když stránka vypadá prázdně, ale vrací 200, vznikne rozpor mezi tím, co kód tvrdí, a co člověk vidí.
301 versus 302 stojí za jednu větu navíc, protože je potkáš u každého redesignu. 301 znamená „přesunuto natrvalo, zapiš si to". Prohlížeč si ho zapamatuje a příště zamíří rovnou na novou adresu, aniž by se ptal serveru. 302 znamená „dočasně jinde, neukládej si to". Praktický rozdíl je hlavně v tom zapamatování. 301 je rychlejší, ale o hodně hůř se ruší, 302 se snadno vrátí zpátky. Pro vyhledávač je při trvalém přesunu v zásadě jedno, který z nich použiješ. Tradiční rada přesto zní sáhnout po té permanentní, protože jasně říká „je to natrvalo". (A aby to bylo komplikovanější, máme nové, moderní kódy, které se chovají prakticky stejně. 301 a 302 jsou "nově" 308 a 307, které jen navíc zachovají typ požadavku. V praxi narazíš na zápis „301 nebo 308".)
Server, nebo prohlížeč: kde se to děje
Zbývá vyřešit, odkud se vzal samotný obsah té odpovědi, totiž HTML.
Něco se stane na serveru, ještě než ti odpoví. Něco se stane v prohlížeči, až u tebe na zařízení. „Server-side" znamená to první, „client-side" to druhé. A to je vlastně celé. Když se řekne „běží to na serveru", obsah dorazí hotový. Když „běží to v prohlížeči", server pošle jen návod a stránku doskládá tvůj prohlížeč až na místě.
Samotné HTML může vzniknout na třech místech: předem, když se web sestavuje (build), na serveru ve chvíli požadavku, nebo až v prohlížeči. Každá možnost něco zjednoduší a něco prodraží. Celé to probíráme později v kapitole statické, dynamické a hybridní weby.
Po cestě bývá kopie
Mezi tebou a serverem často sedí ještě CDN: síť počítačů rozmístěná blíž k návštěvníkům, která drží kopie obsahu, aby web jel rychle i na druhém konci světa. S tím přichází cache, dočasná uložená kopie. Oba pojmy přesně definuje slovník, detail pak zase vysvětluju v hosting a CDN.
Cache je důvod, proč po nahrání změny chvíli vidíš starou verzi. Někde po cestě leží kopie, která ještě neví, že se obsah změnil. Není to chyba, je to daň za rychlost.
Proč ten zámeček
V adresním řádku svítí zámeček. Znamená, že spojení jede přes HTTPS, tedy běžné HTTP zašifrované přes TLS. Šifrování skryje data před cizíma očima po cestě, ověří, že server je opravdu ten pravý, a hlídá, že se obsah cestou nezměnil. Detail i to, proč dnes certifikáty nikdo neřeší ručně, je v hostingu a CDN.
Jen pozor, co zámeček neříká. Ověřuje přenos a identitu serveru, ne to, že web je důvěryhodný nebo že za ním nestojí podvodník. Šifrovaně se dá poslat i nesmysl.
5 / 26