1.1 2016版本

目标:

1.大幅度优化JS代码,面向开发人员更加友好,逻辑清晰,代码简洁,便于阅读,定制开发,扩展,更加符合企业级应用需求。

2.大幅度使用并发技术来提高上传速度,与HttpUploader2相比速度提升4倍。

3.前端仅负责UI显示,所有业务逻辑统一放到控件中处理。

3.支持Chrome 45+。

4.大幅度重复使用线程资源,使线程资源不再频繁重复创建和销毁,充分提升资源的重复使用率。

JS更新:

版本变化

变化

HttpUploader2

HttpUploader2-2016

代码行数

1213

682

组件数

3

1

浏览器加载次数

3

1

上传速度

 

提升3倍

并发数

1

4

稳定性

 

提升50

调用接口

com

json

可扩展性

 

 

多平台事件统一

ie32,ie64,firefox,chrome(npapi),chrome 45+(native message)使用相同的事件处理模型

 

优化控件初始化逻辑

 

弃用的接口:

GetClipboardFiles

AllowMultiSelect

ShowDialog

ShowFolder

GetSelectedFiles

CreateFolder

RemoveFile

ExistFile

FileSize

FileLength

FileFilter

InitDir

 

改进的选择文件方法

改进前

控件返回特定类型的数组,没有提供更丰富的信息,不便于后续业务逻辑的操作

        , OpenFileDialog: function ()

        {

            _this.partIE.FileFilter = _this.Config["FileFilter"];

            _this.partIE.AllowMultiSelect = _this.Config["AllowMultiSelect"];

            _this.partIE.InitDir = _this.Config["InitDir"];

            if (!_this.partIE.ShowDialog()) return;

 

            var list = _this.partIE.GetSelectedFiles();

            if (list == null) return;

            if (list.lbound(1) == null) return;

 

            for (var index = list.lbound(1) ; index <= list.ubound(1) ; index++)

            {

                if (!_this.Exist(list.getItem(index)))

                {

                    _this.AddFile(list.getItem(index));

                }

            }

            _this.PostFirst();

        }

改进后

控件返回JSON数据,更便于后续业务逻辑的操作

     this.part_files = function (ret)

     {

         if (ret.files == null) return;

         for (var i = 0, l = ret.files.length; i < l; ++i)

         {

             var f = ret.files[i];//控件返回JSON数据格式,f.name,f.length,f.size,f.ext

             this.addFileLoc(f);

         }

     };

 

2.拖拽控件事件与Partition控件事件统一,拖拽后触发drop_files消息

消息内容与part_files相同

 

HttpUploader2-queue版本的更多相关文章

  1. STORM在线业务实践-集群空闲CPU飙高问题排查

    源:http://daiwa.ninja/index.php/2015/07/18/storm-cpu-overload/ 2015-07-18AUTHORDAIWA STORM在线业务实践-集群空闲 ...

  2. STORM在线业务实践-集群空闲CPU飙高问题排查(转)

    最近将公司的在线业务迁移到Storm集群上,上线后遇到低峰期CPU耗费严重的情况.在解决问题的过程中深入了解了storm的内部实现原理,并且解决了一个storm0.9-0.10版本一直存在的严重bug ...

  3. Python multiprocess模块(中)

    主要内容: 一. 锁 二. 信号量 三. 事件 通过event来完成红绿灯模型 四. 队列(重点) 队列实现进程间的通信 五. 生产者消费者模型 1. 初始版本(程序会阻塞住) 2. 升级版本一(通过 ...

  4. Java并发(基础知识)—— 阻塞队列和生产者消费者模式

    1.阻塞队列                                                                                        Blocki ...

  5. [Swift]队列Queue的两种版本:(1)用类包装Queue (2)用泛型包装Queue

    队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表.进行插入操作的端称为队尾,进行删除操作的 ...

  6. aodh M版本新特性 - queue between alarm evaluator and alarm notifier

    之前alarm evaluator service and alarm notifier services之间的通信采用RPC的方式,消耗较大,增加work queue的方式可以获得更好的性能, + ...

  7. java集合类深入分析之Queue篇

    简介 Queue是一种很常见的数据结构类型,在java里面Queue是一个接口,它只是定义了一个基本的Queue应该有哪些功能规约.实际上有多个Queue的实现,有的是采用线性表实现,有的基于链表实现 ...

  8. RabbitMQ Lazy Queue 延迟加载

    Lazy Queue 在著名的单例设计模式中就有懒汉式的实现方式,也就是只有在你需要的时候我才去加载. 这让博主想到了以前上学的时候,每到了假期的假期作业,在假期的时候是从来不做的.只有在快开学老师要 ...

  9. Java多线程总结之线程安全队列Queue

    在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列.Java提供的线程安全的Queue可以分为阻塞队列和非阻塞队列,其中阻塞队列的典型例子是BlockingQueue,非 ...

  10. 数据结构《21》----2014 WAP 初试题----Immutable queue

    2014 WAP初试题----实现一个不可变的队列: 看似很简单..实则,不同的版本效率的差距可能是巨大的..甚至难以想象.. 之前用STL库的queue进行了对比,差别非常大.. 用上一篇文章的im ...

随机推荐

  1. Mybatis内部原理与插件原理

    Mybatis的运行分为两大问题,第一部分是读取配置文件保存在Configuration对象中,用以创建SqlSessionFactory,第二部分是SqlSession的执行过程.相对而言SqlSe ...

  2. wkhtmltopdf Windows下 测试demo 成功

    html2pdf 转pdf 中文不换行 然后找到了wkhtmltopdf 支持中文换行 样式也支持 在PHP中生成PDF文件,可以使用 FPDF 和 TCPDF .但是它们只能用于创建简单的表格,当涉 ...

  3. 一步步实现 Redis 搜索引擎

    来源:jasonGeng88 github.com/jasonGeng88/blog/blob/master/201706/redis-search.md 如有好文章投稿,请点击 → 这里了解详情 场 ...

  4. cisco 三层交换机通信

    前言 之前学了交换机和路由器今次学三层交换机的通信. 正文 准备:cisco模拟器 一台三层交换机 两台PC 配置命令如下 enable config t vlan 10 exit vlan 20 e ...

  5. curl_setopt设置发送cookie信息

    1.php curl访问会话传递问题 curl_setopt($ch , CURLOPT_COOKIE , 'PHPSESSID=A7281E0926CB37D791AD464CDD646CF2') ...

  6. keil5破解

    没有破解之前的keil只能编译限制大小的代码,72K好像我忘了?太长的话会报错. 注册机网址:http://bbs.armfly.com/read.php?tid=2346 1.在keil5左上角的F ...

  7. [转] c# 操作Word

    来自 风过四季天 的原文 c# 操作Word总结 在医疗管理系统中为保存患者的体检和治疗记录,方便以后的医生或其他人查看.当把数据保存到数据库中,需要新建很多的字段,而且操作很繁琐,于是想 到网页的信 ...

  8. django -- 自定义simpletag 和 filter

    django中自定义simpletag,即使用自己定义的函数在html中处理数据. 步骤: 1.创建并注册app settings.py INSTALLED_APPS = [ 'django.cont ...

  9. H264码流中SPS PPS详解<转>

    转载地址:https://zhuanlan.zhihu.com/p/27896239 1 SPS和PPS从何处而来? 2 SPS和PPS中的每个参数起什么作用? 3 如何解析SDP中包含的H.264的 ...

  10. mysql主从错误180301

    Fatal error: The slave I/O thread stops because master and slave have equal MySQL server ids; these ...