WebP: वेबपेज compression format
बाधाएँ
- वेबसाइट की accessibility बढ़ाने और page load time घटाने के लिए HTML को minimize किया गया
- GitHub Pages, Brotli compression को support नहीं करता
- gzip डिफ़ॉल्ट रूप से इस्तेमाल होता है, लेकिन Brotli बेहतर compression ratio देता है
सरल विचार
- चूँकि GitHub Pages, Brotli को support नहीं करता, इसलिए client side पर JavaScript से decompress करने का तरीका विचार किया गया
brotli-dec-wasm और tiny-brotli-dec-wasm का उपयोग करके Brotli decompression संभव है
दूसरा प्रयास
- Compression Streams API, gzip और DEFLATE format को support करता है, लेकिन Brotli को नहीं
- Zopfli library का उपयोग करके gzip को अधिक कुशलता से compress किया जा सकता है, लेकिन फिर भी इसका प्रदर्शन Brotli से कम है
नियम तोड़ना
- image compression का उपयोग करके data compress करने के तरीके पर विचार किया गया
- PNG और GIF, DEFLATE algorithm का उपयोग करते हैं, लेकिन WebP बेहतर performance देता है
WebP के फायदे
- WebP, PNG जैसी predictive transform का उपयोग करता है, लेकिन DEFLATE की जगह Google द्वारा विकसित विधि का उपयोग करता है
- अलग-अलग Huffman trees का उपयोग करके अधिक कुशल compression देता है
- color cache का उपयोग करके दोहराए जाने वाले रंगों को कुशलता से store करता है
प्रयोग
- HTML file को compress करने के लिए
webp crate का उपयोग किया गया
- शुरुआती नतीजों में gzip की तुलना में 2 गुना छोटा size मिला
अतिरिक्त optimization
- बेहतर compression performance पाने के लिए image का size adjust किया गया
- सर्वोत्तम परिणाम पाने के लिए अलग-अलग compression methods आज़माए गए
benchmark
- विभिन्न file formats के लिए gzip, bzip2, Brotli, WebP की तुलना की गई
- अधिकांश मामलों में WebP ने gzip से बेहतर performance दिखाई
- Brotli से कम performance होने के बावजूद, इसने फिर भी सार्थक सुधार दिया
JavaScript से decoding
- Canvas API का उपयोग करके WebP decode करने का तरीका समझाया गया
- WebGL का उपयोग करके anti-fingerprinting तकनीकों को bypass किया गया
अंतिम समायोजन
- page load के समय flicker कम करने के लिए styling और ऊपर वाले हिस्से को gzip में रखा गया
- scroll position बनाए रखने के लिए एक temporary workaround सुझाया गया
embedding
- latency घटाने के लिए WebP को सीधे JavaScript में embed किया गया
- size को न्यूनतम रखने के लिए base64 data URL का उपयोग किया गया
उदाहरण
- वास्तविक web page में WebP का उपयोग करके compress किए गए उदाहरण दिए गए
- compression के बाद page size घटने की पुष्टि हुई
GN⁺ का सार
- यह लेख web page की compression performance बेहतर करने के लिए कई तरीकों का अन्वेषण करता है
- WebP format, gzip से बेहतर performance देता है, लेकिन Brotli से कम है
- JavaScript और WebGL का उपयोग करके client side पर WebP decode करने का तरीका समझाया गया
- page load time घटाने के लिए कई optimization techniques सुझाई गईं
- समान कार्यक्षमता देने वाले अन्य projects में Brotli और Zopfli शामिल हैं
1 टिप्पणियां
Hacker News राय
लंबी पोस्ट का आकार 92 KiB से घटकर 37 KiB हो गया, फिर भी वास्तविक लोड समय में बढ़ोतरी सिर्फ 0.001% रही
समझ नहीं आता कि
readPixelsपर fingerprinting-रोधी फीचर क्यों लागू नहीं होताzstd को Chrome में शामिल किया जा चुका है, और इसे Safari में भी लागू किया जाना चाहिए
Google Fonts हटाने से पेज लोड समय बेहतर हो सकता है
source code देखने पर पता चला कि doctype declaration में space नहीं है
<!doctypehtml>है, लेकिन इसे<!doctype html>में बदलना चाहिएHTML पेज को self-extracting ZIP file के रूप में पैकेज किया जा सकता है
Sailfish OS browser में पेज टूट जाता है
Brotli के पास बड़ा dictionary होने के बावजूद इसका प्रदर्शन gzip जैसा ही दिखता है
CompressionStream API में Brotli का उपयोग न होने की वजह यह है कि इससे browser का आकार काफी बढ़ जाता है