如何在使用定期AJAX / XMLHttpRequest调用时修复浏览器的内存增
我在整个周末度过了在Dojo写的Web应用程序中阐述内存增长问题.
Web应用程序将“永远运行”,因此不会重新启动浏览器. 应用程序定期从服务器(无跨域)更新动态数据;每5秒钟进行一次AJAX调用,以检索新数据为JSON. 通过让应用程序运行几个小时,我观察到浏览器内存不断增长(最新的Chrome和Firefox都在最新的Windows和Mac OS X上). 起初,我以为Dojo正在引起这种行为.实际上,通过使用XMLHttpRequest对象切换到本机实现,我可以大大减少内存增长,但它仍然存在.随着每个AJAX请求,内存都在增长一点(约4-8KB). 我已经尝试过: 我有… > …试图使用其他框架,如jQuery,YUI等 – 没有影响 所以即使我没有做任何事情(也如下面第一个StackOverflow链接中所述)与加载的数据,内存使用量增加: 我已经看过: > Memory Leak with an XMLHttpRequest and setInterval 我的测试HTML代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Native XHR Async</title> </head> <body> <script> var update = document.createElement("div"); document.body.appendChild(update); var timeout = null; var xhr = new XMLHttpRequest(); xhr.onreadystatechange = onReadyState; function loadData() { xhr.open("GET","memory-leak.json?" + new Date().getTime()); xhr.send(null); } function onReadyState() { if (this.readyState === 4) { if( this.status === 200 ) { update.innerHTML = ""; update.innerHTML = this.responseText; } if( timeout !== null ) { clearTimeout(timeout); delete timeout; } timeout = setTimeout(loadData,1000); } } loadData(); </script> </body> </html> 和我的测试JSON(在同一个目录): { "errorstatus":"Okay","B0":{"P":"0 Watt"},"E0":{"P":"28 Watt"},"Z0":{"P":"28 Watt"},"S0":{"P":"0 Watt","SOC":"74%"},"Z1":{"P":"0 Watt"},"R0":0,"R1":0,"R2":0,"date":"29.09.2012 09:23:19","Version":"Sep 28 2012-15.22" } 我没有任何解释这个问题,所以任何帮助是非常感谢.如果您需要任何进一步的信息,请不要犹豫,问我.
XmlHttpRequest将缓存每个响应,这就是为什么要添加日期以使该URL唯一.
高速缓存正常写入磁盘,同时也将保存在一个XmlHttpRequest中,只要它存在就发出请求. 您应该使用每个请求的实例并将其销毁,否则,请确保通过编译指示和xhr设置禁用缓存. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- c# – 使用SQL Server Express的Code-First;操作
- UML依赖,关联,组合,聚合,继承,实现的关系
- C#中ToString数据类型格式大全(千分符)
- Ruby数组reverse_each_with_index
- c – const char *,char const *,const char con
- 如何根据对象的某些字段在c中的对象向量中获取mi
- swift – 使用未声明的类型AutoreleasingUnsafeP
- c# – specflow禁用,SpecflowPackagePackage没有
- c# – ASP.NET 5 EntityFramework.Core 7.0.0-rc
- c# – 使用数组的SetValue方法与[]索引器