浏览器还 data URI协议
2012-05-30 22:25
302 查看
一般浏览器引用资源时,都是用http和https协议,部分浏览器和所有的ftp软件都会使用ftp协议,引用本地文件会使用file协议,此外还有mms、thunder等各种协议。
不过刚才突然发现Firefox、Chrome和Opera等浏览器还支持data URI协议(IE 6不支持),格式非常简单:
而2进制文件,例如图像、视频和音乐一般是使用base64编码,这会导致体积增大1/3。
例如要显示一个8×8像素的全黑图片,可以这样:
实际上它还可以作为img等元素的src属性,如果你用支持data协议的浏览器的话,应该可以看到一张图:
如果看不到图的话,赶紧抛弃你那丢人的浏览器吧。
不得不提的是,我觉得它并不合适常规应用,因为存在几个严重问题: base64编码会增大1/3体积,占用更多带宽。
浏览器解析时,会消耗更多的CPU资源,并可能占用更多内存。(这个和浏览器的实现有关,不过至少得多一次base64解码。)
无法让浏览器缓存图像,只能缓存引用它的文件。
在HTML上不能复用,要复用只能放在CSS和JavaScript里。
如果把背景图片写在CSS或JavaScript里,在下载完CSS和JavaScript之前,浏览器是完全停止解析和渲染的,而常规的引用外部图片的方式是可以并行下载的。
但是如果用来生成缩略图却不错,因为不需要在服务器端生成和维护一张临时图片。
最后说下如何用Python生成data URI协议的链接:
然后打开result.txt,里面就是结果了=。=
跑运输论坛,跑跑运输,搞活经济!!! (还等什么!!!赶快猛点进入!!!) 跑运输站长博客,跑运输,搞活经济!!! (还等什么!!!赶快猛点进入!!!)
聚划算淘宝客外推精选商品、 集结聚划算外推高转化商品 品牌卖家折扣商品推广 天天疯狂购,低至3折,还等 神马 打造第一母婴达人馆,网罗更多母婴商品,为你打造属于你的温馨小屋! 淘宝优秀店铺精选,集合了高佣金高转换率的优秀店铺。 秒杀满立减 齐集淘宝疯狂促销食品、让你买得省心、吃得放心、而且还有高额佣金哦! 淘宝皇冠店铺精选,集合了高佣金高转换率的皇冠 店铺。 淘宝网-亚洲最大、最安全的网上交易平台,提供机票、票务服务,方便您的出行 想看宝岛台湾的时尚动态吗,想观宝岛台湾的潮流前沿吗,一切尽在台湾馆频道,高佣金、高转化,精彩不容错过 淘宝最权威的女装风向标,集合了淘宝最热卖的优质商品,给买家带来全新的购物体验。 淘宝商城,亚洲最大最全最专业的网上购物网站——淘宝网打造的在线B2C购物平台。 淘宝商城频道集合了全球最知名的品牌包括联想、惠普、迪士尼、Kappa、乐扣乐扣、JackJones等,给买家带来全新的一站式购物体验 正品行货保证!精选电器城最优品牌商品,让您有亲临商城的优良购物体验。 引领淘宝数码时尚,为你带来淘宝最受追捧的新潮数码产品,让你追随时尚永不out! 淘宝最权威的鞋包配饰风向标,集合了淘宝最热卖的优质商品,让买家了解每季最时尚的配饰。 淘宝客男人频道,精选淘宝网热销男装,高成交、高佣金、高转化,让您收益节节高! 集结淘宝最丰富的强势类目,精选最优质的卖家和商品,达到最广泛的买家覆盖率 淘宝美容馆,我的美容管家。精选商品、高额佣金、疯狂畅销、打造买家自己的美容小馆。 打造第一居家达人馆,网罗更多创意极品和居家商品,为你共同打造属于你的浪漫满屋!
网购从这里开始
不过刚才突然发现Firefox、Chrome和Opera等浏览器还支持data URI协议(IE 6不支持),格式非常简单:
data:资源类型;编码,内容
简单来说,要生成一个html资源,可以这样: data:text/html;ascii,<html><title>hello</title><body>world</body></html>
你把上面的链接复制到浏览器地址栏,打开就能看到效果了。而2进制文件,例如图像、视频和音乐一般是使用base64编码,这会导致体积增大1/3。
例如要显示一个8×8像素的全黑图片,可以这样:
data:image/bmp;base64,Qk1eAAAAAAAAAD4AAAAoAAAACAAAAAgAAAABAAEAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
实际上它还可以作为img等元素的src属性,如果你用支持data协议的浏览器的话,应该可以看到一张图:
如果看不到图的话,赶紧抛弃你那丢人的浏览器吧。
不得不提的是,我觉得它并不合适常规应用,因为存在几个严重问题: base64编码会增大1/3体积,占用更多带宽。
浏览器解析时,会消耗更多的CPU资源,并可能占用更多内存。(这个和浏览器的实现有关,不过至少得多一次base64解码。)
无法让浏览器缓存图像,只能缓存引用它的文件。
在HTML上不能复用,要复用只能放在CSS和JavaScript里。
如果把背景图片写在CSS或JavaScript里,在下载完CSS和JavaScript之前,浏览器是完全停止解析和渲染的,而常规的引用外部图片的方式是可以并行下载的。
但是如果用来生成缩略图却不错,因为不需要在服务器端生成和维护一张临时图片。
最后说下如何用Python生成data URI协议的链接:
import base64 img = open('kirino.jpg', 'rb') # 打开你要转换的图,文件名自己改 content = img.read() # 读取内容 out = open('result.txt', 'wb') # 打开输出文件,文件名自己改 out.write('data:image/jpeg;base64,') # 输出头部,MIME类型自己改 out.write(base64.b64encode(content)) # 输出base64编码后的文件内容
然后打开result.txt,里面就是结果了=。=
跑运输论坛,跑跑运输,搞活经济!!! (还等什么!!!赶快猛点进入!!!) 跑运输站长博客,跑运输,搞活经济!!! (还等什么!!!赶快猛点进入!!!)
聚划算淘宝客外推精选商品、 集结聚划算外推高转化商品 品牌卖家折扣商品推广 天天疯狂购,低至3折,还等 神马 打造第一母婴达人馆,网罗更多母婴商品,为你打造属于你的温馨小屋! 淘宝优秀店铺精选,集合了高佣金高转换率的优秀店铺。 秒杀满立减 齐集淘宝疯狂促销食品、让你买得省心、吃得放心、而且还有高额佣金哦! 淘宝皇冠店铺精选,集合了高佣金高转换率的皇冠 店铺。 淘宝网-亚洲最大、最安全的网上交易平台,提供机票、票务服务,方便您的出行 想看宝岛台湾的时尚动态吗,想观宝岛台湾的潮流前沿吗,一切尽在台湾馆频道,高佣金、高转化,精彩不容错过 淘宝最权威的女装风向标,集合了淘宝最热卖的优质商品,给买家带来全新的购物体验。 淘宝商城,亚洲最大最全最专业的网上购物网站——淘宝网打造的在线B2C购物平台。 淘宝商城频道集合了全球最知名的品牌包括联想、惠普、迪士尼、Kappa、乐扣乐扣、JackJones等,给买家带来全新的一站式购物体验 正品行货保证!精选电器城最优品牌商品,让您有亲临商城的优良购物体验。 引领淘宝数码时尚,为你带来淘宝最受追捧的新潮数码产品,让你追随时尚永不out! 淘宝最权威的鞋包配饰风向标,集合了淘宝最热卖的优质商品,让买家了解每季最时尚的配饰。 淘宝客男人频道,精选淘宝网热销男装,高成交、高佣金、高转化,让您收益节节高! 集结淘宝最丰富的强势类目,精选最优质的卖家和商品,达到最广泛的买家覆盖率 淘宝美容馆,我的美容管家。精选商品、高额佣金、疯狂畅销、打造买家自己的美容小馆。 打造第一居家达人馆,网罗更多创意极品和居家商品,为你共同打造属于你的浪漫满屋!
网购从这里开始
相关文章推荐
- 浏览器支持data URI协议
- 日期类型在浏览器与协议中的差异
- HTTP协议实践篇--浏览器缓存总结、利用Fiddler和apache模拟
- 使用浏览器去检查exchange 2013 协议的健康状况
- 访问使用https协议的网址时,浏览器地址栏没有显示“安全锁”的标志的问题
- 自定义浏览器协议,实现web程序调用本地程序
- 基于http协议的浏览器缓存-- 用户浏览器本地 -- Etag和Expires
- Http协议下的浏览器与服务器的交互
- 浏览器验证网站数字证书的流程(HTTPS协议)
- 浏览器 HTTP 协议缓存机制详解
- 浏览器 HTTP 协议缓存机制详解
- 浏览器的Data URI 体系
- 利用ServerSocket获取浏览器http协议内容
- Android 浏览器自定义scheme:market://协议
- Data URI和MHTML完整解决所有浏览器
- 自定义浏览器协议,实现web程序调用本地程序
- H5外部浏览器直接调起微信——通过url协议 weixin:// 判断是否安装微信及启动微信
- 利用ServerSocket获取浏览器http协议内容
- 浏览器协议插件Asynchronous Pluggable Protocols