" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Data URL和圖片,及Data URI的利弊

系統 2775 0

Data URL 給了我們一種很巧妙的將圖片“嵌入”到HTML中的方法。跟傳統的用 img 標記將服務器上的圖片引用到頁面中的方式不一樣,在Data URL協議中,圖片被轉換成 base64 編碼的字符串形式,并存儲在URL中,冠以mime-type。本文中,我將介紹如何巧妙的使用Data URL優化網站加載速度和執行效率。


?
1. Data URL基本原理

圖片在網頁中的使用方法通常是下面這種利用 img 標記的形式:

        <img src="images/myimage.gif ">
      
?

這種方式中, img 標記的 src 屬性指定了一個遠程服務器上的資源。當網頁加載到瀏覽器中 時,瀏覽器會針對每個外部資源都向服務器發送一次拉取資源請求,占用網絡資源。大多數的瀏覽器都有一個并發請求數不能超過4個的限制。這意味著,如果一個 網頁里嵌入了過多的外部資源,這些請求會導致整個頁面的加載延遲。而使用Data URL技術,圖片數據以base64字符串格式嵌入到了頁面中,與HTML成為一體,它的形式如下:

        <img src="data:image/gif;base64,R0lGODlhMwAxAIAAAAAAAP///
yH5BAAAAAAALAAAAAAzADEAAAK8jI+pBr0PowytzotTtbm/DTqQ6C3hGX
ElcraA9jIr66ozVpM3nseUvYP1UEHF0FUUHkNJxhLZfEJNvol06tzwrgd
LbXsFZYmSMPnHLB+zNJFbq15+SOf50+6rG7lKOjwV1ibGdhHYRVYVJ9Wn
k2HWtLdIWMSH9lfyODZoZTb4xdnpxQSEF9oyOWIqp6gaI9pI1Qo7BijbF
ZkoaAtEeiiLeKn72xM7vMZofJy8zJys2UxsCT3kO229LH1tXAAAOw==">
      

?

從上面的base64字符串中你看不出任何跟圖片相關的東西,但下面,我們將傳統的 img 寫法和現在的Data URL用法左右對比顯示,你就能看出它們是完全一樣的效果。但實際上它們是不一樣的,它們一個是引用了外部資源,一個是使用了Data URL。

幾乎所有的現代瀏覽器都支持Data URL格式,包括火狐瀏覽器,谷歌瀏覽器,Safari瀏覽器,opera瀏覽器。IE8也支持,但有部分限制,IE9完全支持。

?
2. 為什么Data URL是個好東西

Data URL能用在很多場合,跟傳統的外部資源引用方式相比,它有如下獨到的用處:

  • 當訪問外部資源很麻煩或受限時
  • 當圖片是在服務器端用程序動態生成,每個訪問用戶顯示的都不同時。
  • 當圖片的體積太小,占用一個HTTP會話不是很值得時。

Data URL也有一些不適用的場合

  • Base64編碼的數據體積通常是原數據的體積4/3,也就是Data URL形式的圖片會比二進制格式的圖片體積大1/3。
  • Data URL形式的圖片不會被瀏覽器緩存,這意味著每次訪問這樣頁面時都被下載一次。這是一個使用效率方面的問題——尤其當這個圖片被整個網站大量使用的時候。

然而,Data URL這些不利的地方完全可以避免或轉化。本文的重點就是要討論這個問題。

?
3. 在CSS里使用Data URL

當第一次看到Data URL的作用和用法時,你也許會很不疑惑,“為什么要麻煩的將圖片轉換成base64編碼字符串,還要嵌入的網頁中,將HTML代碼弄的混亂不堪,甚至還會有性能上的問題。”

?

誠然,無法否認緩存在瀏覽器性能中的重要作用——如何能將Data URL數據也放入瀏覽器緩存中呢?答案是:通過CSS樣式文件。CSS中的 url 操作符是用來指定網頁元素的背景圖片的,而瀏覽器并不在意URL里寫的是什么——只要能通過它獲取需要的數據。所以,我們就有了可以將Data URL形式的圖片存儲在CSS樣式表中的可能。而所有瀏覽器都會積極的緩存CSS文件來提高頁面加載效率。

?

假設我們的頁面里有一個很小的 div 元素,我們想用一種灰色的斜紋圖案做它的背景,這種背景在當今的網站設計者中非常流行。傳統的方法是制作一個3×3像素的圖片,保存成GIF或PNG格式,然后在CSS的 background-image 屬性中引用它的地址。而Data URL則是一種更高效的替代方法,就像下面這樣。

下面是CSS代碼:

        .striped_box
  {
  width: 100px;
  height: 100px;
  background-image: url("data:image/gif;base64,R0lGODlhAwADAIAAAP///8zMzCH5BAAAAAAALAAAAAADAAMAAAIEBHIJBQA7");
  border: 1px solid gray;
  padding: 10px;
  }
      
?

在我們的HTML里放入下面的代碼:

        <div class="striped_box lazy ">
這是一個有條紋的方塊
</div>
      
?

實際輸出效果就是下面這樣

這是一個有條紋的方塊

在這個例子中,Data URL的使用是完全符合場景的。它避免了讓這個小小的背景圖片獨自產生一次HTTP請求,而且,這個小圖片還能同CSS文件一起被瀏覽器緩存起來,重復使 用,不會每次使用時都加載一次。只要這個圖片不是很大,而且不是在CSS文件里反復使用,就可以以Data URL方法呈現圖片降低頁面的加載時間,改善用戶的瀏覽體驗。

?

?
4. 將圖片轉換成Data URL格式的方法

用Data URL來展示圖片的例子以及它的好處我們說完了,下面我們轉入下一個問題,如何將圖片轉換成Base64編碼的字符串。其實網上有很多工具都可以使用,下面列舉了幾個。其中一個是在線工具,一個Mac OS X桌面應用。

?
Data URL總結

IE6/7是不支持Data URL技術的,不幸的是在中國還有很多用戶在使用這種古老的瀏覽器。希望各方面包括官方和民間都多做努力工作,讓現代瀏覽器(谷歌瀏覽器,火狐瀏覽器,IE11+)盡快的占領市場,這是我們Web程序員最大的愿望。

原文: http://www.webhek.com/data-url/

?

最近Data URI似乎熱了起來,特別是從淘寶UED上發了一篇《 Data URI小試 —— 在旺旺點燈(JS)上的應用 》后,陸續出現這方面的文章。看到不少人提到Data URL時都只是提到了優點,我也好奇了一把,借這機會更全面了解了下。

?

說到Data URI的優點,自然少不了“減少鏈接數”,把圖片轉為Base64編碼,以減少圖片的鏈接數。我們先想當然一下,同樣一張圖片,如果不用發起一個下載請求,打開速度是會更快的。但是,有幾個問題需要關注下:

  • 圖片始終是要下載的,那么下載一張圖片的速度快還是下載一堆編碼快?
  • 瀏覽器對圖片的顯示,處理效率哪個更快?
  • 圖片的緩存問題

做了幾個Demo,我們來看對比下:
多小圖的處理對比: Demo1 DataURI Demo2 img
單圖處理對比: Demo1 DataURI Demo2 img

?

多刷新幾次,可以發現,使用Data URI方式的Demo在渲染時會比不使用 多消耗53%左右的CPU資源,內存多出4倍左右,耗時平均高出24.6倍 。由此可見,使用Data URl方式還是需要更多的考量,在可接受的范圍內適量使用。

?

有關Data URI的介紹可以看下《 data URI scheme 》和《 利用 Data URL 加速你的網頁 》,里面提到的IE8以下瀏覽器不支持的問題,相應的解決方案可以看《 MHTML – when you need data: URI s in IE7 and under 》,當然使用這種方法的代價就是為了兼容IE6\7,使代碼量多出一倍;優點是可以被Cache和Gzip壓縮。

CSS森林 下方使用了另一種兼容IE6\7的方式,有興趣的同學可以找找。

文章地址: http://www.cssforest.org/blog/index.php?id=152

Data URL和圖片,及Data URI的利弊


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日韩免费视频播放 | 国产欧美视频一区二区三区 | 国产精品成人不卡在线观看 | 亚洲视频免费观看 | 91视频一区 | 富二代视频污 | 欧美一区二区三区中文字幕 | 日韩成人精品 | 国产成人一区二区三区 | 国产精品欧美一区二区三区 | 日本福利在线观看 | 久久国产高清视频 | 欧美成人午夜在线全部免费 | 96精品免费视频大全 | 精品国产乱码久久久久久丨区2区 | 在线日韩精品视频 | 亚洲一区二区三区在线视频 | 欧美成人高清 | 精品视频一区二区三区 | 久久a区 | 欧美另类色 | 精品亚洲一区二区三区四区五区 | 奇米影视在线观看 | 香蕉久久夜色精品国产小优 | 日韩毛片大全免费高清 | 九九99热久久精品在线9 | 欧美色欧美亚洲另类二区精品 | 久久中文字幕一区二区三区 | 中文久久 | www.黄色大片 | 日本精a在线观看 | 99成人 | 山岸逢花在线观看 | 91精品国产爱久久久久 | 日韩欧美一区二区三区免费观看 | 免费一二区 | 亚洲国产精品一区二区第一页 | 成人av激情 | 操操碰 | 精品久久久久久久久久久久久久 | 欧美日韩在线免费 |