Data URI scheme 在前端開發中是個經常使用的技術,一般會在 CSS 設置背景圖中用到。好比在 Google 的首頁就有用到:php
Data URI scheme 簡稱 Data URI,常常會被錯誤地寫成 data URLs。筆者認爲一般用於將圖片 base64 編碼的 Data URI 能夠稱爲 data URLs,理由是這個地址(經過 base64 編碼的 URL)能夠在瀏覽器地址欄打開,並且 chrome 面板下也用了 "data URLs" 這個名稱,可是廣義的 Data URI 絕對不能夠用 data URLs 來代替,畢竟 URL 只是 URI 的子集。css
若是你是第一次接觸,可能會詫異於這一堆 "亂七八糟" 的編碼是如何生成,打開 http://www.pjhome.net/web/html5/encodeDataUrl.htm,將任意一張圖拖進去,便能自動幫你生成這串 "base64:URL",接着即可以在任何須要用到圖片 src 屬性的地方,用這個字符串代替。html
Data URI 的格式十分簡單,以下所示:前端
data:[<mime type>][;charset=<charset>][;base64],<encoded data>
咱們先無論它的編碼過程,可能你要問了,這麼費盡周折是爲了啥?這裏就要說到 Data URI 最大的好處,減小 HTTP 請求。一般狀況下咱們在 HTML 頁面中表示一張圖片,會用一個 img 標籤,而後將其 src 屬性指向服務端的一個地址,每一個 img 標籤都會是一次請求;可是用了 Data URI 技術,將圖片編碼成字符串 "內嵌" 入 HTML 代碼中(inline),而後在客戶端完成解碼工做,就不用進行 HTTP 請求了。可是這樣作也有個明顯的缺點,Data URI 沒法進行緩存,因而聰明的工程師通常會把 Data URI 用在 CSS 中,由於 CSS 中的 URL 操做符是用來指定網頁元素的背景圖片的,而瀏覽器並不在乎 URL 裏寫的是什麼——只要能經過它獲取須要的數據。因此,咱們就有了能夠將 Data URL 形式的圖片存儲在 CSS 樣式表中的可能,而全部瀏覽器都會積極的緩存 CSS 文件來提升頁面加載效率。html5
在開發過程當中,其實咱們不經常使用到 Data URI 來表示圖片,在此我將其利弊進行了下彙總。web
利:chrome
弊:瀏覽器
那麼,究竟何時該用 Data URI 技術呢?緩存
最後推薦幾個在線網址(image -> base64 URL):服務器
Read More: