最新信息
您的位置:网站首页  » 行业新闻 » 正文

jquery不会自动回收资源,所以导致了内存溢出

2019-07-02阅览次数: 151次
最近我们公司(宜昌亚荣)在做一个Ajax长连接的项目,页面需要和服务器保持长连接,而且在连接超时后需要重新请求连接,过程中他问我要用到什么,我也是想都没想就告诉他用jQuery。jQuery不是有ajaxSuccess ajaxError这些对象吗,在请求完成或者请求失败后重新请求不就好了。
最近发现jQuery越来越火,用它的人也越来越多。jQuery最强大的亮点莫过于它的CSS3 selector和极其简单的Ajax请求调用。
最近我们公司公司(宜昌网天下)在做一个Ajax长连接的项目,页面需要和服务器保持长连接,而且在连接超时后需要重新请求连接,过程中他问我要用到什么,我也是想都没想就告诉他用jQuery。jQuery不是有ajaxSuccess ajaxError这些对象吗,在请求完成或者请求失败后重新请求不就好了。
但是后来他告诉我说没有用 jQuery,自己手工写的XMLhttprequest 。他告诉我说,开始是用jquery写的,而且在测试过程中也没有出现问题。但是在后来无意中发现,在页面开的时候久了之后,浏览器资源竟然占用非常高导致内存不足而崩溃了。后来抓包分析发现,每次jquery的Ajax请求都会创建一个xmlHttprequest对象,理论上讲,长连接的请求是一个无限递归,请求数量是非常大的,但是由于每次请求都会建立一个新的xmlhttprequest,而且jquery不会自动回收资源,所以导致了内存溢出。
通过查看jquery API,发现jquery还有一个 complete对象,是请求完成后回调函数 (请求成功或失败之后均调用)。 同时有两个参数XMLHttpRequest, textStatus。所以,我们只需要在请求完成后,将传回的XMLHttprequest对象手工回收即可
.ajax({ url: "http://www.aizr.net", data: { name: "xxxx" }, dataType: "xml", success: function (data, textStatus) { //do something... }, complete: function (XHR, TS) { XHR = null } });
相关阅读
客服明星网站建设
  • 精灵,WEBOSS的共同所有者,专注Web服务器/用户体验设计师和前端开发,梦幻般的设计,注重细节蓝精灵,亚[详细]

  • 闵哥,能讲很标准的普通话,我们感觉比电台还好听。他总是戴耳机,时刻再听音乐...闵哥,网络资深从业[详细]

  • 蓝蓝,主要负责平面排版工作。一个有才华的设计师,她结合了她十多年作为销售和市场营销专业的经验蓝蓝[详细]

关于我们 - 联系我们 - 诚聘英才 - 网站文化 - 法律服务 - 网站地图 - 友情链接

合作伙伴 - 网站留言 - 留言列表 - 结算方式 - 在线订单 - 网站投票 - 网站地图

备案编号:鄂ICP备18023717号

©中国网站原创联盟服务机构·亚荣软件·宜昌网站制作

April Media is an independent Media Organization based in Yichang, China.

宜昌亚荣软件开发有限公司 ©版权所有

Copyright © 2010 - 2019 April Media. All Rights Reserved

TEL:13986805302;0717-8866860

UNID:91420506MA48BM2C2J

E-MAIL:web@mrtx.cn

在线下单    13986805302袁工/ 13581492345 闵工/营销中心:0717-8866860 QQ:84486631
网站测试期间,网站文字,图片,及其他资源,若侵犯您的权力,请联系我们!
  • 在线沟通,请点我在线咨询

  • 咨询热线:
    139868O53O2
    客服qq:
    84486631