Proč je zpracování obrázků v prohlížeči výhrou pro soukromí
Jak moderní webová API umožňují vytvářet skutečně soukromé nástroje pro práci s obrázky — a co to znamená pro lidi, kteří je používají.
Obsah
Výchozí očekávání je mylné
Po většinu posledních dvaceti let znamenalo dělat s obrázkem na webu cokoli netriviálního nahrát ho na server. Převést HEIC fotografii, odstranit její EXIF metadata, vygenerovat favicon — každý z těchto nástrojů historicky žil za multipart formulářem. Uživatel klikl na upload, soubor putoval přes veřejný internet a server někde provedl práci.
Tento výchozí stav už není technicky nutný. Prohlížeče už před lety dodaly API, která umožňují spustit celý proces lokálně:
<canvas>aOffscreenCanvaspro práci na úrovni pixelůcreateImageBitmap()pro rychlé dekódování mimo hlavní vláknoFileaBlobpro čtení nahraných souborů, aniž by se kamkoli odesílaly- WebAssembly pro knihovny jako libheif, libwebp a ffmpeg
- Web Workers pro udržení responzivního UI, zatímco běží náročná práce
Když je poskládáte dohromady, soubor nikdy neopustí zařízení. Server ho nikdy neuvidí. Není co logovat, není co uniknout, není co předvolat k vydání.
Co „na straně klienta“ skutečně znamená
Stojí za to být přesný, protože marketingové texty mnoha „soukromých“ nástrojů jsou volné.
Nástroj je skutečně na straně klienta tehdy, když po načtení stránky žádná část obsahu souboru nikdy necestuje na server. Samotná stránka se načte ze serveru (HTML, JavaScript, případně modul WebAssembly). Poté váš soubor vstoupí do paměti prohlížeče a zůstane tam, dokud nezavřete kartu.
Nástroj není na straně klienta, pokud:
- POSTuje soubor na endpoint
/api/... - Odesílá náhled nebo preview na server
- Volá analytický endpoint s metadaty souboru (rozměry, název, hash)
- Směruje soubor přes CDN třetí strany, která vrací zpracovanou URL
Panel sítě v devtools vašeho prohlížeče je zdrojem pravdy. Otevřete ho, vložte soubor a zkontrolujte, co se nahrává. Pokud vidíte, že ven letí název vašeho souboru nebo jeho velikost, nástroj není tak soukromý, jak tvrdí.
Proč na tom v praxi záleží
Tři skupiny lidí tiše těží z toho, když se zpracování obrázků přesune do prohlížeče.
Novináři, aktivisté a výzkumníci pracují se zdrojovými materiály, jejichž únik by byl nebezpečný. EXIF metadata mohou obsahovat GPS souřadnice zařízení, které fotografii pořídilo. Odstraňovač EXIF na straně prohlížeče znamená, že původní soubor nikdy nepřejde přes síť.
Společnosti podléhající regulaci — zdravotnictví, finance, právo — by jinak potřebovaly smlouvu o zpracování dat s tím, kdo nástroj provozuje. Statická stránka, která práci provede lokálně, nevyžaduje žádnou DPA k podpisu, protože neexistuje žádný zpracovatel.
Všichni ostatní získávají zjevné výhody: rychlejší výsledek (žádný čas nahrávání), žádné limity velikosti souboru dané účtem za hosting, žádné selhání, když je server nedostupný.
Kde stále zůstávají kompromisy
Zpracování na straně klienta není magie. Existují skutečné náklady, které byste měli promyslet, než ho zvolíte pro konkrétní problém.
Studený start je těžší
Balíček WebAssembly pro dekódování HEIC má několik set kilobajtů. ffmpeg zkompilovaný do WASM má několik megabajtů. První návštěva tuto cenu zaplatí. Cache pomáhá a code-splitting pomáhá ještě víc — načtěte jen kodek, který si uživatel skutečně vybral.
Hardware uživatele určuje strop
200megapixelový RAW soubor vyčerpá paměť na levném telefonu mnohem dřív než na serveru. Buďte v UI upřímní ohledně toho, co je na daném zařízení realistické.
Nemůžete dávkovat napříč uživateli
Zpracování na straně serveru může deduplikovat a amortizovat náklady. Pokud milion uživatelů převede stejný stockový obrázek, server ho může zpracovat jednou. Na straně klienta se to udělá milionkrát. Pro většinu zátěží osobních nástrojů je to v pořádku — práce je stejně jedinečná — ale stojí za to o tom vědět.
Některé operace server potřebují
Reverzní vyhledávání obrázků potřebuje index. Moderování obsahu potřebuje model, který je příliš velký na odeslání do prohlížeče. Cokoli, co porovnává váš soubor s korpusem, který nevlastníte, potřebuje backend.
Malá etická poznámka
Pokud je váš nástroj skutečně na straně klienta, řekněte to nahlas a dokažte to. Odkazujte na zdrojový kód, ukažte na panel sítě, vysvětlete, co běží kde. Fráze jako „neukládáme vaše data“ nic neznamenají bez architektury, která je podpoří — každý serverový nástroj, ze kterého kdy unikla zákaznická data, říkal přesně totéž a tehdy to myslel vážně.
Platí i opak. Pokud váš nástroj je serverový, nepředstírejte opak. Uživatelé se tento vzorec naučili rozpoznávat a ztráta důvěry, když vás při tom přistihnou, je trvalá.
<!-- tool-cta:start -->
💡 Vyzkoušejte toto: Podívejte se na klientské zpracování v akci s Image Compressor, který zmenšuje obrázky zcela ve vašem prohlížeči, takže se nikdy nic nenahrává na server.
<!-- tool-cta:end -->
Kam dál
Pokud dnes stavíte malý nástroj pro obrázky, berte jako výchozí zpracování na straně klienta a po serveru sáhněte až tehdy, když k tomu máte konkrétní důvod. Prohlížeč vás překvapí tím, jak daleko dokáže práci nést — a lidé na druhém konci síťového spojení vám tiše poděkují za bajty, které nikdy neopustily jejich počítač.


