Obrazová proxy pro originalgallery.com – obchodní zpráva
Proxy před webem zrychlí načtení katalogu děl 4,5× a sníží objem stažených dat o 81 %, bez zásahu do aplikace. Obrázky zůstávají ostré a barvy jsou věrnější než dnes.
Zrychlení
Všechny obrázky katalogu jsou na obrazovce za 3,7 s místo 16,6 s.
| Ukazatel (stránka katalogu) | Dnes | S proxy | Změna |
|---|---|---|---|
| Všechny obrázky načtené | 16,6 s | 3,7 s | 4,5× rychleji |
| Stránka připravená | 14,3 s | 2,0 s | 7× rychleji |
| Hlavní obsah viditelný (LCP) | 4,2 s | 1,9 s | 2,2× rychleji |
| Stažená data | 26,1 MB | 5,0 MB | −81 % |
| Největší obrázek | 6,5 MB | 0,16 MB | 41× menší |
Měřeno v prohlížeči Chrome na připojení 50 Mbit/s, každá varianta jednou. Časy bez proxy během dne kolísaly mezi 8 a 45 s, objem dat je stabilní. Na pomalejším mobilním připojení bude rozdíl větší, protože se stahuje pětina dat.
Zachování kvality
Obrázky mají stejné rozlišení jako dnes a věrnější barvy, komprese je jen o chlup silnější.
- Rozlišení zůstává: katalog dostává obrázky v šířce 800 px, což stačí i pro displeje s trojnásobnou hustotou pixelů. Detail díla a zvětšení (lightbox) dostávají 2048 px.
- Ostrost: každý obrázek se zmenšuje přímo z originálu kvalitním filtrem, ne z už zmenšené kopie.
- Věrnější barvy: dnešní náhledy zahazují barevný profil fotek z iPhonu (Display P3), takže barvy děl vypadají méně syté. Proxy profil zachovává.
- Komprese: míra podobnosti s originálem (SSIM, 1 = shodné) je 0,942 proti dnešním 0,951. To je cena za poloviční objem dat proti nejvyšší kvalitě (0,966).
- Kvalita q55 platí i pro detail a lightbox. Pokud bude při zvětšení ztráta vidět, stačí zvýšit kvalitu v nastavení. Například stupeň 65 místo 55 znamená asi +40 % dat.
Úspora nákladů
Na dnešním hostingu ušetří proxy na přenosu dat téměř 0 Kč, protože přenos je v ceně serveru. Hlavní přínos je 6× větší kapacita linky a menší zátěž serveru. V placeném Supabase Cloud by proxy ušetřila ~4 300 Kč měsíčně na každých 100 000 zobrazení katalogu.
- Současný hosting: web běží na serveru u Hetzneru v Německu (IP 116.202.234.155, síť AS24940). Supabase (úložiště a zmenšování obrázků) je provozovaný na vlastním serveru, ne v Supabase Cloud. Odpovídá přímo na doméně originalgallery.com přes bránu Kong do 1 ms.
- Přenos u Hetzneru je v ceně: dedikované servery mají neomezený přenos (Hetzner), cloudové servery v EU 20 TB měsíčně a pak 1 € za TB (Hetzner Cloud). Typ serveru zvenku nepoznáme. 20 TB odpovídá zhruba 770 000 zobrazení katalogu dnes a 4 milionům s proxy.
- Kapacita linky: linka 1 Gbit/s dnes obslouží ~5 načtení katalogu za sekundu (25 MB obrázků na jedno), s proxy ~30.
- Zátěž serveru: dnes server při každém zobrazení katalogu znovu přepočítá 43 náhledů (~1 s každý), tedy 430 000 přepočtů na 10 000 zobrazení. S proxy se každý náhled spočítá jednou za 30 dní.
| Náklad na obrázky, 100 000 zobrazení katalogu za měsíc | Dnes | S proxy |
|---|---|---|
| Hetzner, současný hosting (přenos v ceně) | 0 Kč | 0 Kč |
| Supabase Cloud Pro, přenos bez CDN ($0,09/GB nad 250 GB) | 4 392 Kč | 311 Kč |
| Supabase Cloud Pro, přenos přes Smart CDN ($0,03/GB nad 250 GB) | 1 464 Kč | 104 Kč |
| Supabase Cloud Pro, zmenšování obrázků ($5 za 1 000 originálů nad 100) | 205 Kč | 0 Kč |
Přenos počítá jen obrázky (25,1 MB dnes, 4,1 MB s proxy na jedno zobrazení). Zmenšování počítá 2 000 děl ze sitemapy, jeden originál na dílo. Ceny jsou bez DPH a bez základního poplatku $25 za Pro, kurz ČNB z 21. 10. 2026: 1 USD = 21,593 Kč. Zdroje: Supabase ceník, Supabase egress, Supabase zmenšování, ČNB kurzy.
Řešení stojí na open-source softwaru bez licenčních poplatků. Potřebuje jen dva kontejnery vedle aplikace a do 10 GB disku na cache.
Otevřená otázka: kolik zobrazení katalogu má web měsíčně (Google Analytics)? Částky v Supabase řádcích rostou lineárně s návštěvností.
Spokojenost klientů
Katalog se v Google metrice rychlosti posune z pásma „špatné“ do „dobré“ a zákazník při procházení děl nemusí čekat na náhledy.
- Rychlost podle Google: LCP do 2,5 s je dobré, nad 4 s špatné (web.dev). Katalog má dnes 4,2 s, s proxy 1,9 s (laboratorní měření).
- Vyhledávání: Google doporučuje dobré Core Web Vitals pro úspěch ve vyhledávání, protože odpovídají tomu, co jeho řazení odměňuje (Google Search Central).
- Mobilní návštěvníci stáhnou na jedno zobrazení katalogu 5 MB místo 26 MB, což šetří jejich datový tarif.
- Plynulé procházení: všechny náhledy jsou načtené za 3,7 s, takže se při scrollování neobjevují prázdná místa.
Technické řešení
Před stávající aplikaci se postaví reverzní proxy nginx s nástrojem imgproxy (oba open-source, dva Docker kontejnery). Vše kromě obrázků předává beze změny, takže aplikaci ani obsah není potřeba upravovat.
- Obrázek zmenší na velikost, ve které se zobrazuje (katalog 800 px, detail 2048 px).
- Převede ho do moderního formátu AVIF, pro starší prohlížeče do WebP nebo JPEG.
- Výsledek uloží na 30 dní do cache a další návštěvníci ho dostanou okamžitě.
- Když zpracování selže, pošle původní obrázek, takže na webu žádný obrázek nechybí.
Prototyp běží lokálně a dá se vyzkoušet na http://localhost:8080, kód je v repozitáři na GitHubu. Dalším krokem je nasazení na server před aplikaci a ověření na skutečném provozu.