JSON解析 - 内存依赖?

时间:2017-12-05 23:12:31

标签: javascript php json parsing memory

我试图将非常大的数组传递给JavaScipt以便在客户端进行操作,但它无法正常工作。这些数组通常每个都有大约12,000个元素,当我只插入2,000个元素时,这段代码正常运行。

    <script type="text/javascript">

        var getLenders = JSON.parse('<?php echo json_encode($getlenders); ?>');
        var discountArray = JSON.parse('<?php echo json_encode($discountArray); ?>');
        var getData = JSON.parse('<?php echo json_encode($sortedArray); ?>');

    </script>

我将服务器的内存需求增加到512MB(之前的4倍),认为这已经足够了,但它仍然无法正常工作。在我将内存增加到1024MB之前,我想知道是否还有其他原因导致内存无效。这可能是客户端内存的问题吗?

赞赏任何意见。

3 个答案:

答案 0 :(得分:1)

我确信这不是一个好主意,因为您无法知道客户端是否有足够的内存来运行您的页面,此页面会冻结浏览器或使其崩溃。

首先,您可以将此代码优化为:

mysqldump

因为json基于JavaScript而不需要转换为字符串并再次解析。

其次,但我有一个想法:当您需要时,只需 var getLenders = <?php $a = json_encode($getlenders); echo $a == null? '{}': $a; ?> ; var discountArray = <?php $b = json_encode($discountArray); echo $b == null? '{}': $b; ?>; var getData = <?php $c = json_encode($sortedArray); echo $c == null? '{}': $c; ?>; 获取所需的值。

答案 1 :(得分:0)

别。

处理如此大量的元素是无利可图的。这对你的服务器来说是不好的,它会以某种方式生成数组,对你的客户来说,这对于必须处理大量的数据是不利的,而且我真的不认为客户端需要在一次运行中显示所有数据。为什么你不考虑只在需要时才加载数据的ajax实现?

答案 2 :(得分:0)

您应该使用分页实现它。因此,可能只是一次显示100个条目,可以按标题进行编辑和排序。 然后,用户可以通过单击next链接决定查看下100个条目。然后,您执行AJAX请求以获取数据并更新您的网站。 jQuery应该足以胜任这项工作。