zoukankan      html  css  js  c++  java
  • data URI scheme及其应用

    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");


  • 相关阅读:
    WPF Popup弹出框箭头自动定位效果
    redis使用3
    linux常用命令
    Redis基础命令使用
    Redis使用笔记1
    jeesite常用注解记录
    Spring@Autowired注解与自动装配
    jeesite中的配置
    jeesite在eclipse中部署
    activiti流程连线与网关以及个人任务、组任务的指定方式
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4599837.html
Copyright © 2011-2022 走看看