Optimalizácia TTFB: Kompletný sprievodca rýchlou odozvou servera v roku 2026
Praktický sprievodca skrátením TTFB pod 800 ms cez edge CDN, HTTP/3, 103 Early Hints a streaming SSR. Konkrétne konfigurácie pre Cloudflare, Nginx a Next.js 15.
Optimalizácia TTFB (Time to First Byte) znamená skrátiť čas, ktorý uplynie od odoslania požiadavky prehliadača po príchod prvého bajtu odpovede zo servera, ideálne pod 800 ms pre 75. percentil návštev podľa oficiálnej definície web.dev. V praxi to dosiahnete kombináciou edge cachovania na CDN, znížením doby spracovania na origin serveri, nasadením HTTP/3, využitím 103 Early Hints a streamovaním HTML namiesto čakania na kompletný render. Tak poďme na to. V tomto sprievodcovi prejdeme každý z týchto pilierov s reálnymi konfiguráciami a kódom pre rok 2026.
Dobrý TTFB je pod 800 ms (75. percentil); zlý nad 1800 ms. Meria sa cez Chrome UX Report (CrUX), nie izolovane v Lighthouse.
TTFB nie je oficiálny Core Web Vital, ale priamo stropom pre LCP. Bez rýchleho TTFB sa pod 2,5 s LCP nedostanete.
Najväčší skok prináša edge cachovanie HTML na CDN (Cloudflare, Vercel, Fastly). Z 1200 ms na 50 ms je realistické.
HTTP/3 nad QUIC eliminuje head-of-line blocking a šetrí 100 až 300 ms na nadviazaní spojenia oproti TCP+TLS 1.3.
Hlavička 103 Early Hints umožňuje preload kritických zdrojov ešte pred 200 OK a posiela LCP dole o 100 až 400 ms.
Streaming SSR (React 19, Next.js 15, Astro 5) pošle prvý bajt do 50 ms aj pri pomalých databázových volaniach.
Čo je TTFB a aká hodnota je dobrá?
TTFB (Time to First Byte) je interval medzi začiatkom navigácie a okamihom, keď prehliadač prijme prvý bajt hlavičky HTTP odpovede pre hlavný dokument. Zahŕňa DNS lookup, TCP handshake, TLS negotiation, čakanie na server (server think time) a čas potrebný na presmerovania. Google ho meria cez PerformanceNavigationTiming.responseStart mínus activationStart.
Oficiálne prahy podľa web.dev pre rok 2026:
Dobré: ≤ 800 ms (75. percentil reálnych návštev)
Vyžaduje zlepšenie: 800 až 1800 ms
Slabé: > 1800 ms
Tu je dôležitý nuance. TTFB nie je samostatný Core Web Vital, je však tvrdým stropom pre optimalizáciu LCP. Ak váš server odpovedá za 1,5 sekundy, LCP pod 2,5 sekundy je matematicky takmer nemožný (prehliadač potrebuje ešte čas na parsing HTML, fetch CSS a vykreslenie obrazu). Preto sa TTFB v praxi rieši ako prvý krok pred ostatnými metrikami.
Prečo je moje TTFB také vysoké?
Vysoké TTFB má štyri typické príčiny, ktoré sa často kombinujú. Po prvé, pomalý origin server, najčastejšie kvôli nezacachovaným databázovým dotazom, N+1 problémom alebo synchronnému volaniu externých API počas server-side renderingu. Druhý vinník sú geografická vzdialenosť a chýbajúci edge cache: ak je váš server v Európe a používateľ v Austrálii, samotná latencia siete pridá 250 až 300 ms ešte pred prvým bajtom.
Tretia veľká kategória sú zbytočné presmerovania. Reťazec http://example.com → https://example.com → https://www.example.com znamená tri kompletné requesty s troma DNS+TCP+TLS handshakemi. Štvrtá je blokujúce middleware, čiže autentifikačné kontroly, A/B testing rozhodnutia alebo edge funkcie, ktoré bežia synchrónne pred každou odpoveďou.
Úprimne, na Slovensku navyše pozorujeme špecifický problém: mnoho e-shopov a mediálnych webov používa shared hosting v Nemecku alebo Česku bez CDN, čo pri každej požiadavke z mobilnej siete prinesie 80 až 150 ms RTT navyše. V jednom projekte som túto vec riešil presunom statického HTML na Cloudflare Pages a TTFB klesol z 1,1 s na 60 ms cez noc. Práve preto je nasadenie globálnej CDN siete prvý krok s najlepším pomerom úsilia a výsledku.
Ako správne merať TTFB v roku 2026
TTFB v Lighthouse v izolovanom teste z laboratórnej siete nemá veľkú výpovednú hodnotu, lebo neodráža reálnu geografiu vašich používateľov. Pre seriózne meranie použite kombináciu týchto zdrojov:
Chrome UX Report (CrUX): agregované 28-dňové percentily z reálnych Chrome používateľov. Dostupné cez PageSpeed Insights, BigQuery alebo CrUX API.
Real User Monitoring (RUM): vlastné meranie cez web-vitals knižnicu. Je to jediný spôsob, ako vidieť TTFB rozdelený podľa krajiny, sieťovej technológie alebo typu zariadenia.
WebPageTest: presné rozdelenie TTFB na DNS, TCP, TLS a server think time z viacerých geografických lokácií.
CDN je jediná zmena s desaťnásobným efektom na TTFB. Princíp je jednoduchý: HTML, ktoré sa medzi používateľmi nelíši (alebo sa líši predvídateľne), uložte do cache na edge uzloch blízko používateľa. Cloudflare má v roku 2026 viac ako 330 lokácií, Vercel približne 40 regiónov, Fastly cez 90. Latencia z najbližšieho POP je typicky 5 až 30 ms namiesto 100 až 300 ms z origin servera.
Pre dynamický obsah, ktorý sa nedá kompletne cachovať, využite stale-while-revalidate. Používateľ dostane okamžite staršiu verziu, kým CDN na pozadí načíta čerstvú:
// Cloudflare Workers / Vercel / Netlify Edge
export async function GET(request: Request) {
const response = await fetch(originUrl);
const headers = new Headers(response.headers);
// Cache na edge 60 sekúnd, povol stale odpoveď ďalších 24 hodín
headers.set(
'Cache-Control',
'public, max-age=0, s-maxage=60, stale-while-revalidate=86400'
);
return new Response(response.body, { headers });
}
Pre personalizovaný obsah (prihlásený používateľ, košík) použite cache key splitting alebo edge personalization cez Cloudflare Workers alebo Vercel Edge Middleware. Statickú časť stránky cachujte globálne, dynamickú časť dotiahnite cez fragment alebo ESI. Tento prístup posiela prvý bajt do 30 až 80 ms aj pre prihlásených používateľov.
HTTP/3, QUIC a 0-RTT obnovenie spojenia
HTTP/3 beží nad QUIC protokolom (UDP + TLS 1.3 + multiplexing), nie nad TCP. V júni 2026 ho podporuje približne 32 % top 10 miliónov stránok podľa W3Techs a všetky veľké prehliadače vrátane Chrome, Safari a Firefoxu ho majú zapnuté default. Detaily špecifikuje RFC 9114.
Tri kľúčové prínosy pre TTFB:
Skombinovaný handshake: TLS plus transport sa dohodne v jednom round-tripe namiesto dvoch. Pri 80 ms RTT to ušetrí presne 80 ms.
0-RTT resumption: opätovné spojenie z rovnakého klienta pošle prvý request rovno s prvým paketom. TTFB pri navigácii v rámci webu klesne o ďalších 80 až 100 ms.
Žiadny head-of-line blocking: stratený paket pre jeden stream nezdržuje ostatné, čo pomáha pri zlej mobilnej sieti.
Cloudflare, Fastly, Vercel a AWS CloudFront ho zapínajú jediným prepínačom. Pre vlastný Nginx 1.25+ nakonfigurujte:
103 Early Hints: rýchlejší preload kritických zdrojov
Status kód 103 Early Hints (definovaný v RFC 8297) umožňuje serveru poslať Link hlavičky pre preload predtým, než pripraví finálnu 200 OK odpoveď. Prehliadač začne sťahovať CSS, fonty a hero obrázok počas toho, ako sa na backende ešte renderuje HTML.
Príklad sekvencie:
HTTP/2 103 Early Hints
Link: </_next/static/css/app.css>; rel=preload; as=style
Link: </fonts/inter-var.woff2>; rel=preload; as=font; crossorigin
Link: </hero.avif>; rel=preload; as=image; fetchpriority=high
HTTP/2 200 OK
Content-Type: text/html; charset=utf-8
... HTML telo ...
V Next.js 15 sa Early Hints zapínajú automaticky pre statické routes na Vercel a Cloudflare Pages. Pre Express alebo Fastify použite explicitné API:
Reálne merania ukazujú zlepšenie LCP o 100 až 400 ms, najmä pri pomalých backendoch alebo CMS systémoch. Kombinácia s optimalizáciou obrázkov pre web a správnym fetchpriority atribútom dáva najlepšie výsledky.
Streaming SSR a Partial Prerendering
Tradičný server-side rendering pošle prvý bajt až keď je celé HTML hotové. Ak databáza odpovedá 600 ms, TTFB bude minimálne 600 ms. Streaming SSR pošle <head> a kostru stránky okamžite (do 50 ms) a zvyšok prúdi v chunkoch s Transfer-Encoding: chunked.
React 19 a Next.js 15 to robia natívne cez Suspense:
// app/page.tsx
import { Suspense } from 'react';
import { ProductList } from './ProductList';
import { Skeleton } from './Skeleton';
export default function HomePage() {
return (
<main>
<h1>Vitajte v obchode</h1>
<Suspense fallback={<Skeleton />}>
{/* Toto moze trvat 600 ms, TTFB neceka */}
<ProductList />
</Suspense>
</main>
);
}
Partial Prerendering (PPR), stabilný v Next.js 15.2 z apríla 2026, ide ešte ďalej. Statickú časť stránky vygeneruje pri builde a hosťuje na edge CDN s TTFB pod 50 ms, dynamické časti streamuje v rovnakom HTML payloade. Astro 5 má podobnú schopnosť cez server:defer direktívu.
Optimalizácia databázy a backend kódu
Ak ste vyčerpali sieťové optimalizácie a TTFB stále viazne, vinník je pravdepodobne na backende. V poradí najčastejších príčin:
Chýbajúce indexy: spustite EXPLAIN ANALYZE nad pomalými dotazmi. Sekvenčný scan tabuľky s miliónom riadkov pridá ľahko 200 až 500 ms.
N+1 dotazy: jeden zoznam produktov nevolajte ako 1 query na list plus 50 queries na ceny. Použite JOIN alebo eager loading (Prisma include, Drizzle with, EF Core Include).
Synchronné volania externých API: ak SSR čaká na response z platobnej brány, posuňte to do klientského fetchu po hydratácii.
Studené starty serverless funkcií: AWS Lambda, Vercel Functions a Cloudflare Workers majú rôzne cold-start latencie. Workers a Lambda SnapStart sú v 2026 najrýchlejšie (pod 10 ms).
Pre PostgreSQL je v roku 2026 odporúčaný stack pgbouncer alebo Supabase Supavisor pre connection pooling plus materializované views pre často čítané agregáty. Pri Redis cachi nezabudnite na SETEX s TTL a stratégiu cache-aside. Ak Redis padne, fallback na DB nesmie zhodiť celý web.
Pre čítavé endpointy (typický blog, produktový katalóg) má najlepší pomer úsilia k zisku in-memory caching v Node.js procese. Pamätám si projekt, kde som nasadil lru-cache s 60 sekundovým TTL na zoznam kategórií a TTFB skočil z 300 ms na 2 ms za odpoludnie. Pre detailnejšie ladenie behu na hlavnom vlákne pozri sprievodcu optimalizáciou INP.
Redirecty, DNS a TLS handshake
Tri rýchle výhry, ktoré sa často zabúdajú:
Problém
Vplyv na TTFB
Riešenie
Reťazec presmerovaní HTTP→HTTPS→www
+200 až 600 ms
Konfigurujte iba jedno priame 301 redirect na finálnu URL
Pomalý DNS (autoritatívny server)
+50 až 200 ms
Použite anycast DNS (Cloudflare, Route 53, NS1) s nízkym TTL
TLS handshake bez session resumption
+100 až 200 ms
Zapnite TLS 1.3 plus session tickets plus OCSP stapling
Žiadny preconnect na 3rd-party
+100 až 300 ms
Pridajte <link rel="preconnect"> v <head>
Pre tretie strany ako Google Fonts, analytiku alebo CDN obrázkov pridajte na začiatok dokumentu:
Toto neovplyvní TTFB hlavného dokumentu, ale skráti čas potrebný na následné zdroje, čo má rovnaký efekt na vnímanú rýchlosť stránky.
Často kladené otázky
Aká je dobrá hodnota TTFB v roku 2026?
Podľa web.dev je dobrá hodnota TTFB ≤ 800 ms pre 75. percentil reálnych návštev. Hodnoty 800 až 1800 ms vyžadujú zlepšenie a nad 1800 ms sa považujú za slabé. Top 10 % stránok dosahuje TTFB pod 200 ms vďaka edge cachovaniu.
Je TTFB Core Web Vital?
Nie, TTFB nie je oficiálny Core Web Vital, tými sú LCP, INP a CLS. TTFB je však Googlom klasifikovaný ako podporná metrika, lebo priamo limituje LCP. Bez optimalizovaného TTFB sa pod 2,5 s LCP nedostanete.
Pomôže CDN naozaj znížiť TTFB?
Áno, pre cachovateľný obsah je CDN najefektívnejšia optimalizácia. Edge cachovanie HTML zníži TTFB z 800 až 1500 ms na 30 až 80 ms. Aj pre nezacachovateľný obsah CDN znižuje latenciu vďaka geograficky bližšiemu POP a optimalizovanému spojeniu na origin.
Ako môžem otestovať, či mám zapnuté HTTP/3?
V Chrome DevTools otvorte Network panel, kliknite pravým na hlavičky stĺpcov a zapnite "Protocol". Pri každom requeste uvidíte h3 (HTTP/3), h2 alebo http/1.1. Alternatívne použite príkaz curl --http3 -I https://example.com alebo nástroj http3check.net.
Aký je rozdiel medzi TTFB a Server Response Time v Lighthouse?
Lighthouse audit "Server response time" (kedysi nazývaný "Reduce initial server response time") meria len serverovú časť TTFB, bez DNS, TCP a TLS. Celkový TTFB nameraný cez RUM zahŕňa všetky tieto fázy, preto je typicky o 100 až 300 ms vyšší než hodnota z Lighthouse.
Funguje 103 Early Hints v starších prehliadačoch?
103 Early Hints podporuje Chrome 103+, Edge 103+, Firefox 120+ a Safari 17.4+ (jar 2024). Staršie prehliadače hlavičku ignorujú bez akýchkoľvek negatívnych dôsledkov, je teda bezpečné ju zapnúť ako progresívne vylepšenie.
Kompletný sprievodca optimalizáciou Cumulative Layout Shift (CLS) v roku 2026. Naučte sa opraviť problémy s vizuálnou stabilitou webu — od rozmerov obrázkov, cez metrické prepísanie fontov pomocou size-adjust, až po debugging s Layout Shift Attribution API.
INP je najčastejšie zlyhávaná metrika Core Web Vitals — 43 % webov prekračuje hranicu 200 ms. Naučte sa diagnostikovať pomalé interakcie pomocou LoAF API, rozdeľovať dlhé úlohy cez scheduler.yield(), presúvať prácu do Web Workers a využívať concurrent features React, Vue a Angular.