`
hax
  • 浏览: 965319 次
  • 性别: 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对象,所以估计你的泄漏量会小。
分享到:
评论

相关推荐

    用js创建XMLHttpRequest对象池

    因此,通过创建一个对象池,我们可以缓存一些已经实例化的XHR对象,供后续请求重复使用,从而减少资源消耗。 创建XMLHttpRequest对象池的步骤如下: 1. **初始化对象池**:在应用程序启动时,预先创建一定数量的...

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

    在IE5中,XHR是通过ActiveX对象MSXML实现的,而在IE7及以上版本以及Firefox、Chrome、Safari等现代浏览器中,它们支持原生的XHR对象。创建XHR对象的兼容代码如下: ```javascript var xhr; if (window....

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

    在本文中,我们将深入探讨XHR对象的创建、使用方法以及相关特性。 **一、创建XMLHttpRequest对象** 创建XHR对象在不同浏览器中存在兼容性问题。在IE6及更早版本中,需要使用ActiveXObject,而其他现代浏览器则支持...

    XHR Proxy Tool插件(chrome浏览器)

    **XHR Proxy Tool插件详解** 在现代Web开发中,跨域资源共享(CORS)成为了一个重要的议题,尤其是在进行API测试和开发时。XHR Proxy Tool是一款针对Chrome浏览器的插件,它为开发者提供了一种便捷的方式来解决跨域...

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

    在JavaScript - XHR.js这个示例中,我们将探讨如何利用XHR对象实现用户注册和登录过程中的短信验证码功能。 首先,我们需要了解XHR对象的基本用法。在JavaScript中,可以通过`new XMLHttpRequest()`创建一个实例,...

    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 ) ;} ...

    前端开源库-mock-xhr

    通过创建XHR对象,我们可以发送GET、POST等HTTP请求,获取服务器的数据,更新页面内容,而无需刷新整个页面,这是现代Web应用中不可或缺的一部分。 然而,在实际开发过程中,我们往往需要在没有网络连接或者不希望...

    ext-2.0.2含localXHR.rar

    "localXHR.js"的工作原理是通过模拟XMLHttpRequest对象,使得开发者可以在本地文件系统上进行读取、写入或删除操作。这对于测试数据加载、存储或者API调用的逻辑非常实用,尤其是对于那些基于JSONP或者CORS(跨源...

    XHR

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

    没有XHR,Ajax精彩依旧

    Ajax的核心在于利用XMLHttpRequest对象进行异步数据交互,使用户在无需刷新整个页面的情况下,能够与服务器进行背景通信,提高网页的响应速度和用户体验。 **XMLHttpRequest (XHR)** XMLHttpRequest是Ajax的基础,...

    javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象

    在JavaScript中,XMLHttpRequest(简称XHR)对象是用于在后台与服务器进行异步数据交换的核心组件,常用于实现Ajax(Asynchronous JavaScript and XML)技术。然而,频繁地创建和销毁XMLHttpRequest对象会带来性能...

    XHR的简单封装xr.zip

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

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

    【前端项目-i18next-xhr-backend.zip】...总之,【前端项目-i18next-xhr-backend.zip】提供了前端项目中实现国际化的重要工具,通过xhr技术实现了动态、高效的翻译资源加载,对于构建多语言支持的Web应用具有重要意义。

    localXHR

    Ext2.0文档下载后在本地不能阅读,下载localXHR.js放在docs目录下然后在index.html中加入<script src="localXHR.js">,要放在extall.js后面。

    localXHR.js

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

    xhr2:jQuery XHR 包装器扩展

    xhr2 是一个基于 jQuery 的扩展,它为原始的 XMLHttpRequest (XHR) 对象提供了一层封装,使得在 JavaScript 中进行 AJAX 请求更加便捷和强大。xhr2 主要针对的是 jQuery 1.5 及以上版本,利用 jQuery 的核心功能,...

    一个用于通过XHR2在浏览器上预加载资源的1kbJavaScript库

    本项目是一个仅1kb大小的JavaScript库,专为通过XMLHttpRequest Level 2(XHR2)在浏览器中实现资源预加载而设计。这个小巧的库提供了高效且灵活的方式来加载各种类型的文件,并且具有进度跟踪功能,使开发者能够更...

    dotnet-叶子浏览器基于Cef访问网页时自动抓取结构化xhr数据

    标题中的“dotnet-叶子浏览器基于Cef访问网页时自动抓取结构化xhr数据”指出,这个项目是一个使用.NET框架开发的浏览器应用,名为“叶子浏览器”。它利用了Chromium Embedded Framework (Cef) 技术,实现了对网页的...

    python-selenium-proxy-xhr.zip

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

Global site tag (gtag.js) - Google Analytics