当前位置: 首页 > news >正文

前端图片合成技术_前端图片合并方案调研

介绍

通过产品线数据分析,发现70%左右的图片为小于300K的图片,50%左右为小于100K的图片,因此调研前端图片合并方案是否有利于提高图片批量上传速度。之前做过的前端ZIP方案也是类似的思路。

工具

使用Network Link Conditioner模拟各种网络环境;

使用sprites/index.html测试前端合并的效率;

使用zip/index.html中的NOZIP方案测试无合并的效率;

前端合并方案

采用Canvas将小图片拼接到单列上得到合并后的图片;

将合并后的图片发送到服务器端;

测试维度

网络环境: 10K 100K 300K 500K无网络延时以及50K带100ms网络延时;

图片大小: 100K

并发数:1 - 5

图片数量:50

数据

*说明:未计算服务器端将合并后图片拆解所需时间;

speed = 256 K/S delay = 5ms(ADSL)

T 1 2 3 4 5

Sprites(ms) 148563 146993 146910 147149 147957

Normal(ms) 203878 184155 187438 183793 183533

% 28 20 22 20 19

speed = 10 M/S delay = 1ms(WIFI Good Connectivity)

T 1 2 3 4 5

Sprites(ms) 2356 1495 1264 1202 1208

Normal(ms) 3322 1891 1524 1290 1221

% 29 20 17 7 1

speed = 500 K/S delay = 0

T 1 2 3 4 5

Sprites(ms) 8904 8622 8471 8434 8444

Normal(ms) 11326 10770 10183 10980 10181

% 21 20 17 23 17

speed = 300 K/S delay = 0

T 1 2 3 4 5

Sprites(ms) 14377 14352 13951 13927 13924

Normal(ms) 17636 16961 16972 16975 17001

% 18 15 17 18 18

speed = 100 K/S delay = 0

T 1 2 3 4 5

Sprites(ms) 41549 42185 41973 - -

Normal(ms) 51796 53401 51758 - -

% 20 21 19 - -

speed = 10 K/S delay = 0

T 1 2 3 4 5

Sprites(ms) 414722 - - - -

Normal(ms) 538864 - - - -

% 23 - - - -

speed = 50 K/S delay = 100ms

T 1 2 3 4 5

Sprites(ms) 90348 88913 88996 90615 -

Normal(ms) 139343 125771 110348 109680 -

% 35 29 20 17 -

分析

并发(2-5个请求)与不并发(1个请求)在高速和低速网络环境下效率表现有差异。在低速下,由于单个请求的速度已占满带宽,并发时每个请求的速度均会被平分,从而并发与不并发无明显差异。而高速下单个请求的速度并不能占满带宽,并发时每个请求的速度不会平方,从而导致并发对网络使用效率更高,拥有更高的传输速度;

合并方案在上传效率上总体优于不合并方案,优势在单请求时达到最大(速度最大能提升35%),随着请求数增多,优势也在收窄。原因在于,并发对于不合并方案而言拥有比合并方案更大的收益:并行连接以及连接重用,减少网络延时成本。而对于合并方案不存在连接重用,而并发本身在低速下无法提速,从而导致优势收窄;

合并方案对于不合并方案的优势在高延时网络下最大。因为合并方案相比不合并方案最大的优势是节省请求,因此当网络延时增大时,每个请求的时间会变长,而这对于合并方案的影响非常有限,但对于不合并方案则会成倍增加。

与ZIP方案相比

图片合并效率比ZIP效率快10倍左右,因此图片合并更适合图片上传;

ZIP方案效率更低,但可以适用于所有文件类型;

结论

CANVAS合并方案批量上传效率整体优于无合并方案,上传速度提升平均20%;

合并方案适合用于网络延时较大的网络环境,降低网络连接成本;

CANVAS合并需考虑后端成本,如果可接受建议使用;

相关文章:

  • 可靠性测试设备技术含量_设备软件可靠性测试
  • plsql怎么用字段查表明_在oracle中怎么通过字段名查询其所在的表
  • 微信小程序云开发用户身份登录_微信小程序+云开发实现欢迎登录注册
  • pandas提取时间里面的年月日_pandas进行时间数据的转换和计算时间差并提取年月日...
  • iserdese2接口详解_Xilinx Notes
  • postman启动没反应_高压软起动通电没反应维修控制器烧毁
  • python策略模式包含以下哪些角色_python---策略模式
  • mybatis 插件_建议收藏,mybatis插件原理详解
  • h5引入json_Html5页面内使用JSON动画的实现
  • bootstrap列表加序号_用vue.js做一个列表,类似于百度的搜索排名,用v-for来循环...
  • 中将2个map的值合并_如果是我,不纠结卫生间留1个还是2个,主卫次卫大合并,宽敞舒适...
  • 宋佳机器人_丝路电影节|宋佳专访:特殊时期用电影抚慰人心 是很温暖的事
  • ipv4的地址位数_网络基础之IP地址和子网掩码
  • 城市运行一网统管_民主监督 | 城市运行“一网统管”,“啄木鸟”在行动
  • 能够编辑excel的python 软件有哪些_平面设计包括哪些软件,常用的设计软件都有哪些...
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • C++入门教程(10):for 语句
  • Java应用性能调优
  • MQ框架的比较
  • mysql外键的使用
  • nodejs实现webservice问题总结
  • Octave 入门
  • PHP的类修饰符与访问修饰符
  • SpriteKit 技巧之添加背景图片
  • vue和cordova项目整合打包,并实现vue调用android的相机的demo
  • win10下安装mysql5.7
  • Yeoman_Bower_Grunt
  • 测试如何在敏捷团队中工作?
  • 第2章 网络文档
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 数据科学 第 3 章 11 字符串处理
  • 微信开放平台全网发布【失败】的几点排查方法
  • 新手搭建网站的主要流程
  • 字符串匹配基础上
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 从如何停掉 Promise 链说起
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • "无招胜有招"nbsp;史上最全的互…
  • (07)Hive——窗口函数详解
  • (4)Elastix图像配准:3D图像
  • (Python) SOAP Web Service (HTTP POST)
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (二)JAVA使用POI操作excel
  • (二)pulsar安装在独立的docker中,python测试
  • (附源码)计算机毕业设计ssm电影分享网站
  • (算法)Travel Information Center
  • (转)ABI是什么
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)为C# Windows服务添加安装程序
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil