javascript可以处理的最大文件大小是多少?

时间:2013-01-30 22:27:29

标签: javascript jquery xml

  

可能重复:
  Javascript Memory Limit

我正在使用客户端javascript创建html页面,这将在页面加载时加载大约150mb的XML数据文件。当文件大小约为5 mb时,将整个数据加载到数组中需要30秒。但是当我将文件更改为140 MB时,页面在firefox中没有响应并且在chrome中突然崩溃。我的片段加载数据将处理xml中的每个标记。我的问题是,javascript的堆大小是否有限?任何学术文章资源都可以强调我的研究。

$(document).ready(function () {
        // Open the xml file
        $.get("xyz.xml", {}, function (xml) {
            // Run the function for each  in the XML file
             $('abc', xml).each(function (i) {
                a = $(this).find("a").text();
                b = $(this).find("b").text();
                c = $(this).find("c").text();
                ab = $(this).find("ab").text();
                bc = $(this).find("bc").text();
                cd = $(this).find("cd").text();
                de = $(this).find("de").text();
                // process data
              dosomething(a,b,c,ab,bc,cd,de);
                   }); }); });

2 个答案:

答案 0 :(得分:2)

我不知道有什么限制。我甚至可以加载1Gb文件。是的,最初加载速度很慢,一切都运行缓慢,因为大部分内存都会被分页。

但是,尝试加载一个大的JavaScript对象时存在问题,主要是因为解析器无法解析太大的对象。见Have I reached the limits of the size of objects JavaScript in my browser can handle?

对于这种情况,解决方案是将JavaScript对象的创建分解为多个阶段,而不是使用单个文字语句。

答案 1 :(得分:0)

因为要改进很多。首先,我想向您推荐一篇帖子76 bytes for faster jQuery。所以,依靠在$ _(this)上替换你的$(this)。 它会为你节省很多记忆和时间!!

如果您不想使用单个jQuery对象,请将变量包含在内:

$('abc', xml).each(function (i) {
   var $this = $(this);
   a = $this.find("a").text();
   ....
});

并且您可以提供dosomething功能以尝试改进它