使用Data URI为网站提速

在研究Google网页底部的四色签名档处的时候。查看其源码HTML部分为:

<div id="maia-signature"></div>

CSS部分是通过背景图片实现的,但是其图片url却很反常。

background:url("data:image/png;base64,iVBORw0KGgoA....")

查阅相关资料后发现这是Data URI。通过Data URI你在使用标签,或者用CSS声明背景图片时,可以不用链接到外部图片文件,而是直接将图片数据写入文档。

在HTML中像这样使用图片:

<img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEU...." alt="" />

在CSS中可以这样使用背景图片:

#id{ background:url("data:image/png;base64,R0lGODlhEAAQ...") no-repeat left center; }

格式说明:

data:[<mime type>][;charset=<charset>][;base64],<encoded data>

数据部分的字符能够被浏览器解析为其原有文件类型。
为什么要这样做?

最主要的原因:减少HTTP请求。除了纯文档大小,这是影响网页加载速度最大的因素。越少越快。
怎样得到代码?

使用这个在线转换工具。

http://websemantics.co.uk/online_tools/image_to_data_uri_convertor/

浏览器兼容性

IE系列,IE8以下不支持Data URI。你可以:

对IE单独书写一个CSS将图片引入。
只在一些有特殊需求(没有图片更好)的场合使用。
直接无视!
阅读这篇文章里面给出了替换的解决方法。

注意事项

转换后的代码数据要比原图片数据多少大一些。这点GZip可以解决。
IE8有最低的URI数据大小限制32768字节。所以不要指望任何大小图片都行。
如果网站全都用Data URI替换的话,将会很难维护。使用图片更简单。
如果你使用php,可以通过下面代码获得Data URI
<?php echo base64_encode(file_get_contents("../images/folder16.gif")) ?>
你最好只在有大量缓存的文档中使用,如你的CSS。如果能够减少6个HTTP请求,即使CSS由50k增加到300k也是值得的。但是前提是CSS能够像图片一样缓存,所以给CSS设置较长的缓存时间会比较好。
Data URI不只可以用于图片,理论上可以用于任何东西。
<canvas>可能比Data URI更有优势。一旦其得到更广泛的支持,有人做出相关工具。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值