WebP: web sayfası sıkıştırma biçimi
Engeller
- Web sitesinin erişilebilirliğini artırmak ve sayfa yükleme süresini azaltmak için HTML küçültülüyor
- GitHub Pages Brotli sıkıştırmasını desteklemiyor
gzip varsayılan olarak kullanılıyor, ancak Brotli daha iyi sıkıştırma oranı sunuyor
Basit fikir
- GitHub Pages Brotli’yi desteklemediği için, istemci tarafında JavaScript ile açma yöntemi değerlendiriliyor
brotli-dec-wasm ve tiny-brotli-dec-wasm kullanılarak Brotli açılabiliyor
İkinci deneme
- Compression Streams API,
gzip ve DEFLATE biçimlerini destekliyor ancak Brotli’yi desteklemiyor
- Zopfli kütüphanesiyle
gzip daha verimli sıkıştırılabiliyor, ancak yine de Brotli’den geride kalıyor
Kural bozmak
- Veriyi sıkıştırmak için görüntü sıkıştırmasından yararlanma yöntemi değerlendiriliyor
- PNG ve GIF, DEFLATE algoritmasını kullanıyor ancak WebP daha iyi performans sunuyor
WebP’nin avantajları
- WebP, PNG’ye benzer öngörülü dönüşümler kullanıyor ancak DEFLATE yerine Google’ın geliştirdiği bir yöntemi kullanıyor
- Farklı Huffman ağaçları kullanarak daha verimli sıkıştırma sağlıyor
- Renk önbelleği kullanarak tekrar eden renkleri verimli biçimde saklıyor
Deney
- HTML dosyasını sıkıştırmak için
webp crate’i kullanılıyor
- İlk sonuçlar,
gzipten 2 kat daha küçük boyut gösteriyor
Ek optimizasyonlar
- Daha iyi sıkıştırma performansı elde etmek için görüntü boyutu ayarlanıyor
- En iyi sonucu bulmak için çeşitli sıkıştırma yöntemleri deneniyor
Karşılaştırma testleri
- Çeşitli dosya biçimleri için
gzip, bzip2, Brotli ve WebP karşılaştırılıyor
- WebP çoğu durumda
gzipten daha iyi performans gösteriyor
- Brotli’den geride kalsa da yine de anlamlı bir iyileşme sağlıyor
JavaScript ile kod çözme
- Canvas API kullanarak WebP’nin nasıl çözüleceği açıklanıyor
- WebGL kullanılarak anti-fingerprinting tekniklerinin nasıl aşılacağı anlatılıyor
Son ayarlar
- Sayfa yüklenirken oluşan titremeyi azaltmak için stiller ve üst bölüm
gzip ile tutuluyor
- Kaydırma konumunu korumak için geçici bir çözüm öneriliyor
Gömme
- Gecikmeyi azaltmak için WebP doğrudan JavaScript içine gömülüyor
- Boyutu en aza indirmek için base64 veri URL’si kullanılıyor
Örnek
- Gerçek bir web sayfasında WebP ile sıkıştırılmış bir örnek sunuluyor
- Sıkıştırma sonrası sayfa boyutunun küçüldüğü görülüyor
GN⁺ Özeti
- Bu yazı, web sayfalarının sıkıştırma performansını iyileştirmek için çeşitli yöntemleri inceliyor
- WebP biçimi
gzipten daha iyi performans sunuyor, ancak Brotli’den geride kalıyor
- JavaScript ve WebGL kullanarak istemci tarafında WebP’nin nasıl çözüleceği açıklanıyor
- Sayfa yükleme süresini azaltmak için çeşitli optimizasyon teknikleri öneriliyor
- Benzer işlev sunan diğer projeler arasında Brotli ve Zopfli bulunuyor
1 yorum
Hacker News görüşleri
Uzun bir gönderinin boyutu 92 KiB'den 37 KiB'ye düşürülmesine rağmen, gerçek yükleme süresi artış oranı yalnızca %0,001
readPixels'in parmak izi karşıtı korumalara neden tabi olmadığını anlamıyorumzstd Chrome'a eklendi; Safari'ye de gelmeli
Google Fonts kaldırılırsa sayfa yükleme süresi iyileşebilir
Kaynak koduna bakınca doctype bildiriminde boşluk olmadığını gördüm
<!doctypehtml>şeklinde, ama<!doctype html>olarak düzeltilmeliHTML sayfaları kendinden çıkartmalı ZIP dosyaları olarak paketlenebilir
Sayfa Sailfish OS tarayıcısında bozuluyor
Brotli, büyük bir sözlüğe (dictionary) sahip olmasına rağmen gzip'e benzer performans gösteriyor
Brotli'nin CompressionStream API'de kullanılmama nedeni, tarayıcı boyutunu ciddi ölçüde artırması