编码 data:text/html;c,关于 Data URI Scheme -- data:image/jpg;base64
轉(zhuǎn)載一篇大神的文章
大家可能注意到了,網(wǎng)頁(yè)上有些圖片的src或css背景圖片的url后面跟了一大串字符,比如:
data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAAeAAD/7gAOQWRvYmUAZMAA= //這是隨便寫(xiě)的,不要訪問(wèn)
什么是DATA URI Scheme呢?
其實(shí)就是形如data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAOQWRvYmUAZMAA=的資源鏈接,
一般出現(xiàn)在img元素的src屬性。Data URI scheme是在RFC2397中定義的,目的是將一些小的數(shù)據(jù),直接嵌入到網(wǎng)頁(yè)中,
從而不用再?gòu)耐獠课募d入,減少請(qǐng)求資源的鏈接數(shù)。上面的DATA URI Scheme中 base64, 后的字符就是經(jīng)過(guò)base64編碼后的數(shù)據(jù),瀏覽器會(huì)對(duì)其解碼并渲染該圖片資源。
data:①[]②[;charset=]③[;]④,⑤
①. data :協(xié)議名稱(chēng);
②. [] :可選項(xiàng),數(shù)據(jù)類(lèi)型(image/png、text/plain等)
③. [;charset=] :可選項(xiàng),源文本的字符集編碼方式
④. [;] :數(shù)據(jù)編碼方式(默認(rèn)US-ASCII,BASE64兩種)
⑤. , :編碼后的數(shù)據(jù)
注意:
[a]. ?[][;charset=] 的缺省值為HTTP Header 中Content-Type的字段值;
[b]. [;]?的默認(rèn)值為US-ASCII,就是每個(gè)字符會(huì)編碼為%xx的形式;
[c]. [;charset=]?對(duì)于IE是無(wú)效的,需要通過(guò)?設(shè)置編碼方式;而Chrome則是?屬性設(shè)置編碼無(wú)效,要通過(guò)?[;charset=]來(lái)設(shè)置;FF就兩種方式均可。
[d]. 若 ,?不是以?[;]方式編碼后的數(shù)據(jù),則會(huì)報(bào)異常
Data URI scheme支持的類(lèi)型有:
data:,文本數(shù)據(jù)
data:text/plain,文本數(shù)據(jù)
data:text/html,HTML代碼
data:text/html;base64,base64編碼的HTML代碼
data:text/css,CSS代碼
data:text/css;base64,base64編碼的CSS代碼
data:text/javascript,Javascript代碼
data:text/javascript;base64,base64編碼的Javascript代碼
data:image/gif;base64,base64編碼的gif圖片數(shù)據(jù)
data:image/png;base64,base64編碼的png圖片數(shù)據(jù)
data:image/jpeg;base64,base64編碼的jpeg圖片數(shù)據(jù)
data:image/x-icon;base64,base64編碼的icon圖片數(shù)據(jù)
base64簡(jiǎn)單地說(shuō),它把一些 8-bit 數(shù)據(jù)翻譯成標(biāo)準(zhǔn) ASCII 字符,網(wǎng)上有很多免費(fèi)的base64 編碼和解碼的工具,在PHP中可以用函數(shù)base64_encode() 進(jìn)行編碼,如
echo base64_encode(file_get_contents(‘wg.png’));
.目前,IE8、Firfox、Chrome、Opera瀏覽器都支持這種小文件嵌入。
網(wǎng)頁(yè)中一張圖片可以這樣顯示:
也可以這樣顯示:
SVQICAjb4U/gAAAABlBMVEX///+ZmZmOUEqyAAAAAnRSTlMA
/1uRIrUAAAAJcEhZcwAACusAAArrAYKLDVoAAAAWdEVYdENyZWF0aW9uIFRpb
WUAMDkvMjAvMTIGkKG+AAAAHHRFWHRTb2Z0d2FyZQBBZG9iZSBGaXJld29y
a3MgQ1M26LyyjAAAAB1JREFUCJljONjA8LiBoZyBwY6BQQZMAtlAkYMNAF1fBs/
zPvcnAAAAAElFTkSuQmCC" />
優(yōu)點(diǎn):
當(dāng)訪問(wèn)外部資源很麻煩或受限時(shí)
當(dāng)圖片是在服務(wù)器端用程序動(dòng)態(tài)生成,每個(gè)訪問(wèn)用戶(hù)顯示的都不同時(shí)。
當(dāng)圖片的體積太小,占用一個(gè)HTTP會(huì)話不是很值得時(shí)。減少資源請(qǐng)求鏈接數(shù)。
缺點(diǎn):不會(huì)被瀏覽器緩存起來(lái),這意味著每次訪問(wèn)這樣頁(yè)面時(shí)都被下載一次。這是一個(gè)使用效率方面的問(wèn)題——尤其當(dāng)這個(gè)圖片被整個(gè)網(wǎng)站大量使用的時(shí)候。
Base64編碼的數(shù)據(jù)體積通常是原數(shù)據(jù)的體積4/3,也就是Data URL形式的圖片會(huì)比二進(jìn)制格式的圖片體積大1/3。
移動(dòng)端性能比http URI scheme低。
支持
Opera 7.2+ data URI 必須小于4100字符
IE8+ data URI必須小于32k(IE8不支持js的data URI)
Chrome、FF和Safari無(wú)限制
總結(jié)
以上是生活随笔為你收集整理的编码 data:text/html;c,关于 Data URI Scheme -- data:image/jpg;base64的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 神迹帝卡好
- 下一篇: 学计算机专业英语报告范文,计算机学习报告