Görselleri tarayıcıda işlemek gizlilik açısından neden avantajdır
Modern web API’leri gerçekten özel görsel araçları oluşturmanıza nasıl olanak tanıyor — ve bu, onları kullanan insanlar için ne anlama geliyor.
İçindekiler
Varsayılan beklenti yanlış
Son yirmi yılın büyük bölümünde, web’de bir görselle sıradan olmayan herhangi bir şey yapmak onu bir sunucuya yüklemek anlamına geliyordu. Bir HEIC fotoğrafı dönüştürmek, EXIF metadata’sını temizlemek, bir favicon oluşturmak — bu araçların her biri tarihsel olarak bir multipart form arkasında çalışıyordu. Kullanıcı upload düğmesine tıklıyor, dosya herkese açık internet üzerinden yol alıyor ve bir yerlerdeki sunucu işi yapıyordu.
Bu varsayılan artık teknik olarak gerekli değil. Tarayıcılar yıllar önce tüm hattın yerel olarak çalışmasını sağlayan API’ler sundu:
<canvas>andOffscreenCanvaspiksel düzeyi işler içincreateImageBitmap()hızlı, ana iş parçacığı dışında decoding içinFileandBlobyüklenen dosyaları hiçbir yere göndermeden okumak için- WebAssembly libheif, libwebp and ffmpeg gibi kütüphaneler için
- Web Workers ağır işler çalışırken UI’ın yanıt vermeyi sürdürmesi için
Bunları bir araya getirdiğinizde dosya cihazdan hiç ayrılmaz. Sunucu onu asla görmez. Loglanacak bir şey yoktur, sızacak bir şey yoktur, mahkeme celbine konu olacak bir şey yoktur.
"Client-side" aslında ne anlama gelir
Kesin konuşmaya değer, çünkü pek çok "özel" aracın pazarlama metni gevşektir.
Bir araç, sayfa yüklendikten sonra dosyanın içeriğinin hiçbir parçası hiçbir zaman bir sunucuya gitmiyorsa gerçekten client-side’dır. Sayfanın kendisi bir sunucudan yüklenir (HTML, JavaScript, belki bir WebAssembly modülü). Bundan sonra dosyanız tarayıcının belleğine girer ve sekmeyi kapatana kadar orada kalır.
Bir araç şu durumlarda client-side değildir:
- Dosyayı bir
/api/...endpoint’ine POST ediyorsa - Bir sunucuya thumbnail veya preview gönderiyorsa
- Dosya metadata’sı (boyutlar, ad, hash) ile bir analytics endpoint’i çağırıyorsa
- Dosyayı işlenmiş bir URL döndüren üçüncü taraf bir CDN üzerinden yönlendiriyorsa
Tarayıcınızın devtools içindeki ağ paneli gerçeği söyler. Açın, bir dosya bırakın ve neyin yüklendiğini kontrol edin. Dosya adınızın veya dosya boyutunuzun dışarı gittiğini görüyorsanız, araç iddia ettiği kadar özel değildir.
Bu pratikte neden önemlidir
Görsel işleme tarayıcıya taşındığında üç insan grubu sessizce fayda görür.
Gazeteciler, aktivistler ve araştırmacılar sızması hâlinde tehlikeli olabilecek kaynak materyallerle çalışır. EXIF metadata, fotoğrafı çeken cihazın GPS koordinatlarını içerebilir. Tarayıcı tarafında çalışan bir EXIF temizleyici, özgün dosyanın ağ üzerinden hiç geçmemesi anlamına gelir.
Regülasyon altındaki şirketler — sağlık, finans, hukuk — aksi hâlde aracı çalıştıran kişiyle bir veri işleme sözleşmesi yapmak zorunda kalırdı. İşi yerel olarak yapan statik bir sayfa için imzalanacak DPA yoktur, çünkü ortada bir veri işleyen yoktur.
Geri kalan herkes bariz faydaları elde eder: daha hızlı sonuç (yükleme süresi yok), hosting faturasının belirlediği dosya boyutu sınırları yok, sunucu çöktüğünde başarısızlık yok.
Ödünleşimler hâlâ nerede
Client-side sihir değildir. Belirli bir problem için onu seçmeden önce düşünmeniz gereken gerçek maliyetler vardır.
Soğuk başlangıç daha ağırdır
HEIC decoding için bir WebAssembly paketi birkaç yüz kilobayttır. WASM’e derlenmiş ffmpeg birkaç megabayttır. İlk ziyaret bu maliyeti öder. Önbellekleme yardımcı olur, kod bölme daha da fazla yardımcı olur — yalnızca kullanıcının gerçekten seçtiği codec’i yükleyin.
Tavanı kullanıcının donanımı belirler
200 megapiksellik bir RAW dosyası, bir sunucuda tükenmeden çok önce giriş seviyesi bir telefonda belleği tüketir. UI’da cihazda neyin gerçekçi olduğu konusunda dürüst olun.
Kullanıcılar arasında batch yapamazsınız
Sunucu tarafı işleme deduplicate edebilir ve maliyeti yayabilir. Bir milyon kullanıcı aynı stok görseli dönüştürürse, bir sunucu onu bir kez işleyebilir. Client-side bunu bir milyon kez yapar. Çoğu kişisel araç iş yükü için bu sorun değildir — iş zaten benzersizdir — ama bilmeye değer.
Bazı işlemler sunucu gerektirir
Reverse image search bir index gerektirir. Content moderation, gönderilemeyecek kadar büyük bir model gerektirir. Dosyanızı sahip olmadığınız bir corpus ile karşılaştıran her şey backend gerektirir.
Küçük bir etik nokta
Aracınız gerçekten client-side ise, bunu yüksek sesle söyleyin ve kanıtlayın. Kaynak koda link verin, ağ panelini gösterin, neyin nerede çalıştığını açıklayın. "Verilerinizi saklamıyoruz" gibi ifadeler, onları destekleyecek bir mimari olmadan hiçbir şey ifade etmez — müşteri verisi sızdırmış her sunucu tarafı araç da tam olarak bunu söylemişti ve o anda bunu samimiyetle kastediyordu.
Tersi de geçerlidir. Aracınız server-side ise, aksini iddia etmeyin. Kullanıcılar bu örüntüyü tanımayı öğrendi ve sizi yakaladıklarında oluşan güven kaybı kalıcıdır.
<!-- tool-cta:start -->
💡 Bunu deneyin: Görselleri tamamen tarayıcınızda küçülten ve böylece hiçbir şeyin asla bir sunucuya yüklenmemesini sağlayan Image Compressor ile istemci tarafı işlemeyi çalışırken görün.
<!-- tool-cta:end -->
Buradan nereye
Bugün küçük bir görsel yardımcı aracı geliştiriyorsanız, varsayılan olarak client-side’ı seçin ve yalnızca somut bir nedeniniz olduğunda sunucuya başvurun. Tarayıcının işi ne kadar ileri taşıyabildiği sizi şaşırtacaktır — ağ bağlantısının diğer ucundaki insanlar da makinelerinden hiç ayrılmayan baytlar için size sessizce teşekkür edecektir.


