`
hax
  • 浏览: 952736 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

XHR对象池是无意义的

    博客分类:
  • AJAX
阅读更多
本文是针对http://www.iteye.com/topic/103313的回复。

池增加了代码复杂度,反而可能降低效率。我估计,native的new XMLHttpRequest肯定应比你的池要高效。只有IE6,因为是创建一个AcitveX对象,可能较为低效。但是这种效率提高到底有多少?非常值得怀疑。

事实上,对象池技术在多数场合并无必要,例如在java中,只有重量级资源对象,或者反复创建相同的对象并可能影响性能,才会使用对象池。

而在js里面:
1. js对象只是XHR的wrapper,纯粹new一个js对象的开销不会比你复杂的池要大,只会小。
2. XHR自己可能存在优化。实际上,UA自己或者更底层的网络协议层,对于http请求都是有队列的。所以不用你画蛇添足。
3. 就算要用池,浏览器同源请求在同一时刻只能有2个,不同源的也有一定上限(通常10个以下),所以你真的要做池的话,其实应该控制上限。
4. 最重要一点,即使池稍稍提高了效率,与一个HTTP的Network IO相比,肯定可以忽略不计。

总之,XHR的池是毫无意义的——除非你有数据证明它确实提高了效率。

BTW,使用你这个代码的“好处”是,虽然你的这个代码在IE6上会有内存泄漏,但同样是泄漏,因为你重复利用了XHR对象,所以估计你的泄漏量会小。
分享到:
评论

相关推荐

    深入理解ajax系列第一篇之XHR对象

     ajax技术的核心是XMLHttpRequest对象(简称XHR),这是由微软首先引入的一个特性,其他浏览器提供商后来都提供了相同的实现。XHR为向服务器发送请求和解析服务器响应提供了流畅的接口,能够以异步方式从服务器取得更...

    XHR-Object:一个小的XHR对象,可以轻松地执行XMLHttpRequests

    XHR对象轻松执行XMLHttpRequests的最小XHR对象如何发送POST示例const data = { id : 1 , name : 'Rose'} ;const url = 'test.html' ;xhr . request ( 'POST' , url , data , ( res ) => { console . log ( res ) ;} ...

    XHR

    XHR 博文链接:https://eric2007.iteye.com/blog/213570

    XHR的简单封装xr.zip

    xr 是 XMLHttpRequest 的超简单封装,并返回 ES6 Promise。示例代码:xr.get('/api/items', {take: 5}) ... console.log("xhr", xhr);  console.log("progress", xhrProgressEvent);  }  } });

    JavaScript - XHR实现短信验证码注册登录完整示例:JavaScript - XHR.js和附件说明

    JavaScript - XHR实现短信验证码注册登录完整示例:JavaScript - XHR.js和附件说明

    ext-2.0.2含localXHR.rar

    修改了帮助文档的index.html, 包含localXHR.js 能够在本地直接打开帮助文档!

    jQuery在header中设置请求信息的方法

    beforeSend: function(xhr){xhr.setRequestHeader('X-Test-Header', 'test-value');},//这里设置header success: function() {} }); 也就是setRequestHeader函数 如何在ajax请求中设置特殊的Requ

    python-selenium-proxy-xhr.zip

    自动化模拟浏览器,打开网站,分析所有ajax / XHR请求,包含详细的response request数据。。。就是F12以后Network中xhr显示的数据。。。 采用python browsermobproxy selenium实现 包含代码,chromedriver 、 ...

    localXHR.js

    一个js脚本. 需要的人自然知道它是干什么的,呵呵 共享给需要的人

    AngularJS入门教程05:XHR和依赖注入

    【AngularJS入门教程05:XHR和依赖注入】 很多AngularJS初学者看到中文入门教程,却无法使用GitHub下载到配套的Angular的Seed工程,因此学习曲线大。在此专门下载配套工程打包分享给大家。 本集教程地址: ...

    没有XHR,Ajax精彩依旧

    工作室交流会的ppt,具体是讲通过动态修改html来借用浏览器的实时渲染特性来实现资源的异步下载以及一些应用。

    XHR Proxy Tool插件(chrome浏览器)

    XHR Proxy Tool chrome浏览器插件 可以用于跨域接口请求 另外nei平台管理接口也指定使用该插件(https://nei.netease.com)

    Ajax-xhr.js.zip

    Ajax-xhr.js.zip,js是使用xmlhttprequest发出ajax/http请求的库()。,ajax代表异步javascript和xml。它是多种web技术的集合,包括html、css、json、xml和javascript。它用于创建动态网页,其中网页的小部分在不重新...

    前端开源库-mock-xhr

    前端开源库-mock-xhrmock xhr,用于单元测试的xmlhttpRequest的模拟实现

    前端项目-i18next-xhr-backend.zip

    前端项目-i18next-xhr-backend,Backend layer for i18next using browsers XHR

    XHR——XMLHttpRequest对象 - gaojun - 博客园1

    3. Re:JS面向对象的程序设计 4. Re:查看LINUX进程内存占用情 1. 查看LINUX进程内存占用情况 2. Linux上Oracle 11g安装步

    自己封的XHR,实现JAVA与JS直接通信

    自己封的XHR,实现JAVA与JS直接通信,起到连接JAVA与JS的桥梁,使用方法直接在JS中引入XhrAjax.js,传入参数带回返回值即可,但是要注意回调的时候要eval()激回一下返回值!

    xhr:一个小的xhr包装器

    xhr 一个小的XMLHttpRequest包装器。 设计用于使用 ,等。 API的一个子集这样你就可以在两个node.js中,通过使用浏览器的作品写的代码require('request')在你的代码,并告诉您的浏览器捆绑到加载xhr而不是request ...

    Linux下以C构建WEB服务同时响应XHR(XMLHttpRequest)请求

    Linux下以C构建WEB服务并响应XHR(XMLHttpRequest)请求 具体可以参见该文 http://blog.csdn.net/xxdddail/article/details/18841325

    helper-xhr:简单的XHR Promise包装器

    XHR助手非常基本,非常简单的xhr promise包装器。 我开始使用 ,很快发现对fetch请求 。 所以我创建了这个miny / simple / basic xhr请求包装器。安装 npm install helper-xhr没有依赖性。 是的,它在。用法 import ...

Global site tag (gtag.js) - Google Analytics