Base64編碼的空間開銷是多少?


從電子郵件(MIME)到Web(HTML / CSS / JavaScript)的許多Internet格式都是純文本的。如果您通過電子郵件發送圖像或可執行文件,則通常首先使用base64進行編碼。base64編碼背后的技巧是我們使用64種不同的ASCII字符,包括所有字母,大寫和小寫以及所有數字。

並非所有非文本文檔都使用base64編碼在線共享。但是,這很常見。加載google.com或bing.com並查看HTML源代碼:您將使用base64編碼的圖像。

Base64顯然是浪費,因為我們每個字節只使用64個不同的值,而一個字節可以代表256個不同的字符。也就是說,我們使用字節(8位字)作為6位字。每8位傳輸數據浪費2位。要發送三個字節的信息(3次8是24位),你需要使用四個字節(4次6再次是24位)。因此,文件的base64版本比它可能大4/3。所以我們使用的存儲空間比我們多33%。

聽起來很糟糕。工程師如何容忍這種浪費的格式?

Web服務器通常以壓縮形式提供內容。壓縮部分抵消了base64的浪費性質。

為了評估base64編碼的效果,我選擇了最近一篇研究論文中使用的一組圖像。有不同的壓縮格式,但舊的格式是gzip。我使用base64對圖像進行編碼,然后使用gzip壓縮它們。我報告了字節數。我讓文件可用。

文件名 原文件大小 Base64文件大小 Base64文件gzip后大小
bing.png 1355 1832 1444
googlelogo.png 2357 3186 2477
lena_color_512.jpg 105764 142876 108531
mandril_color.jpg 247222 333970 253868
peppers_color.jpg 9478 12807 9798

如您所見,gzip大小在原始大小的5%之內。對於較大的文件,差異接近2.5%。

因此,您可以安全地在Web上使用base64而不必過於擔心。

在某些情況下,base64編碼甚至可以提高性能,因為它避免了對不同服務器請求的需要。在其他情況下,base64會使事情變得更糟,因為它往往會破壞瀏覽器和服務器緩存。隱私方面,base64編碼可以帶來好處,因為它隱藏了您在較大的加密包中訪問的內容。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM