base64編碼圖片

base64:是一種基於64個可打印字符來表示二進制數據的表示方法。經常使用於在一般處理文本數據的場合,表示、傳輸、存儲一些二進制數據,包括MIME電子郵件XML的一些複雜數據。webpack

可打印字符:在顯示器上輸出且可以看見。ASCII 32~128。git

上文64個可打印字符特指:A-Za-z0-9,其他兩個可打印字符(不一樣系統不一樣的字符)。github

 

應用例子:web

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAAkCAYAAABIdFAMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAHhJREFUeNo8zjsOxCAMBFB/KEAUFFR0Cbng3nQPw68ArZdAlOZppPFIBhH5EAB8b+Tlt9MYQ6i1BuqFaq1CKSVcxZ2Acs6406KUgpt5/ LCKuVgz5BDCSb13ZO99ZOdcZGvt4mJjzMVKqcha68iIePB86GAiOv8CDADlIUQBs7MD3wAAAABJRU5ErkJggg%3D%3D"/>瀏覽器

【Data URI scheme是在RFC2397中定義的,目的是將一些小的數據,直接嵌入到網頁中,從而不用再從外部文件載入,減小http請求。可是瀏覽器不會緩存這種數據。】緩存

data URI 的格式: data:[<mediatype>][;base64],<data>網絡

【Data URI中,data表示取得數據的協定名稱,image/png 是數據類型名稱,base64 是數據的編碼方法,逗號後面就是這個image/png文件base64編碼後的數據。】性能

 

與webpack的關聯:編碼

url-loader: Loads files as base64 encoded URL。url

用法:url-loader 功能相似於 file-loader,可是在文件大小(單位 byte)低於指定的限制時,能夠返回一個 DataURL。

{ loader: 'url-loader', options: { limit: 8192 //小於這個字節數就會用base64的方式編碼數據,而後嵌入到網頁中。 } }
link: https://www.webpackjs.com/loaders/url-loader/

優缺點:(摘自掘金文章)

  1. Base64會讓樣式文件變得很大,從而阻塞關鍵下載和渲染。
  2. 樣式文件增長的體積沒法經過Gzip很好地壓縮。
  3. 在緩存方面,本能夠分別設置緩存策略的圖片和樣式表也混在一塊兒,沒法區別更新。
  4. 在瀏覽器渲染方面,也增長了解析CSS樹的耗時。
  5. 在CSS文件中過多使用Base64時,會讓首次渲染時間(First Paint)增長2倍以上,在移動端,因爲網絡和手機性能的緣故,這一時間可能會增長10倍以上。
link:https://juejin.im/entry/58ca2b9dac502e0058868693
相關文章
相關標籤/搜索