码迷,mamicode.com
首页 > 其他好文 > 详细

data URI scheme及其应用

时间:2014-05-09 14:42:18      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:data uri   base64   缓存   优化   

data URI scheme通俗的来讲就是将一张图片直接塞到HTML中而不是通过HTTP请求去获取。这样从表面上看会减少一次HTTP的请求,实现了对于网页的优化(不过看了其他一些文章data URI因为将图片采用了base 64的编码方式进行表达,所以还是需要进行HTTP去下载内容,而且这样的渲染方式同时也加大了内存,cpu等等的压力,因此选择的时候需要进行性能方面的权衡)。

比如一张图片用http请求方式进行请求并且显示的方法:

<img src="http://sjolzy.cn/images/A.png"/>
同样的效果使用 data URI scheme ,将图片转化为Base64编码方式后可以这样写进html中,很显然会减少一次请求的耗时

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAIAAAA
7ljmRAAAAGElEQVQIW2P4DwcMDAxAfBvMAhEQMYgcACEHG8ELxtbPAAAAAElFTkSuQmCC" />

其中,data - 取得数据的协定名称;image/png - 数据类型名称;base64 - 数据的编码方法;iVBOR.... - 编码后的数据

对于图片的base 64编码后的获取方式,可以用 PHP 的 base64_encode() 进行编码,或者用canvas的toDataURL去获得。


Data URL 虽然节省 HTTP 请求,但是倘若这个图像要在网页多个地方显示的话,便会加大网页的内容,延长了下载的时间,其中一个解决办法是在一个 CSS class 中加入 data URL,在需要显示图像的区块调用这个 class;

另外一个避免过多html内容造成http请求加重的方法是采用 Data URI+localstorage的方法来实现图片资源的缓存,也就是将图片转化为base 64的字符串形式,配上图片的过期信息组成json存储到localstorage中,从而实现缓存的效果。

var imgAsDataURL = imgCanvas.toDataURL("image/png");


data URI scheme及其应用,布布扣,bubuko.com

data URI scheme及其应用

标签:data uri   base64   缓存   优化   

原文地址:http://blog.csdn.net/minedayu/article/details/25369581

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!