当前位置:首页 > 开发 > Web前端 > Ajax > 正文

ajax大参数(大数据)提交性能分析

发表于: 2015-05-30   作者:chenbowen00   来源:转载   浏览:
摘要: 近期在项目中发现如下一个问题 项目中有个提交现场事件的功能,该功能主要是在web客户端保存现场数据(主要有截屏,终端日志等信息)然后提交到服务器上方便我们分析定位问题。客户在使用该功能的过程中反应点击提交后反应很慢,大概要等10到20秒的时间浏览器才能操作,期间页面不响应事件。 根据客户描述分析了下的代码流程,很简单,主要通过OCX控件截屏,在将前端的日志等文件使用OCX控件打包,在将之转换为
近期在项目中发现如下一个问题
项目中有个提交现场事件的功能,该功能主要是在web客户端保存现场数据(主要有截屏,终端日志等信息)然后提交到服务器上方便我们分析定位问题。客户在使用该功能的过程中反应点击提交后反应很慢,大概要等10到20秒的时间浏览器才能操作,期间页面不响应事件。
根据客户描述分析了下的代码流程,很简单,主要通过OCX控件截屏,在将前端的日志等文件使用OCX控件打包,在将之转换为base64码,最后当然是使用ajax异步进行提交(使用prototype框架ajax方法)了。验证过程也很简单主要是各个认为有性能缺陷的点都插入了时间点日志,并且使用了各种型号的zip包(主要验证数据量大对报文提交的影响)进行提交。
分析后发现OCX截屏用时最短,ocx打包和转换base64码根据zip包的大小,也就是说zip包越大耗时越长(一般在1-3秒之间,5秒基本是50,60M的数据了),最后发现用时最长的居然是prototype的提交(排除服务器响应时间,即是说收到请求处理后的时间可忽略不计,tip已验证过基本在毫秒级),prototype的ajax方法提交居然用了10多秒钟(本次测试最大zip包的时间)。当然肯定要跟踪下该ajax方法哪里损耗时间了,最后一通跟踪,发现prototype方法的ajax提交会对请求参数进行处理进行各种转换操作,prototype的toQueryParams方法对输入参数执行了decodeURIComponent方法, 在调用prototype的ajax方法时,已经对参数串执行了encodeURIComponent方法,后续prototype对参数串转换为键值对映射时又执行了解码操作,因为涉及的解码字符串比较大,js脚本一直处于执行中因此导致后面浏览器进入处理假死状态。
后面解决的办法也很简单,自己重新写了一个原生的ajax请求方法,不在对参数进行处理,调整修改后测试验证了下,时间一下少了4分之三,基本本次测试的最大包提交也在3,4秒之间,本次分析就差不多结束了。

ajax大参数(大数据)提交性能分析

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
<input type="button" class="btn-50" value="保存" id="saveBtn" style="cursor: pointer;"/>
前言 写这篇文章有三个原因,一是在工作中一直艰难地摸索着这块也曾写过一篇很粗略的大数据之安全漫
前段时间,我发了一篇文章《大扇区硬盘的出现与分析 》来说明09年出现的大扇区的硬盘,并且也受到一
随着互联网、移动互联网和物联网的发展,谁也无法否认,我们已经切实地迎来了一个海量数据的时代,
http://cloud.csdn.net/a/20110815/303101.html 随着互联网、移动互联网和物联网的发展,谁也无法否
摘要:Admaster数据挖掘总监 随着互联网、移动互联网和物联网的发展,谁也无法否认,我们已经切实地
大数据下的数据分析平台架构 2011-08-15 14:59 | 7691次阅读 | 【已有7条评论】发表评论 来源:《程
  最近去武汉参加第八届全国测试学术会议,包括硬件测试、软件测试,碰到许多老朋友和新朋友,大
数据,大量的数据,在这个时代俨然是“大杀器”。 打造“理想主义收费社交网络”这种事会得到关注,
大数据是一个时代,“国家队”很及时 去年底宣布的一个事情,将对未来有深远影响,现在大家还没意识
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号