代码之家  ›  专栏  ›  技术社区  ›  Imnotapotato

PHP:请求50MB-100MB json-浏览器崩溃/不显示任何结果

  •  -3
  • Imnotapotato  · 技术社区  · 7 年前

    巨大的json服务器请求:例如大约50MB-100MB。

    据我所知,当将大量数据请求加载到表(我通常使用datatables)时,它可能会崩溃,结果是:内存几乎达到8G,浏览器崩溃。Chrome可能不会返回结果,Firefox通常会问我是否要等待或终止进程。

    我将开始研究一个项目,它将发送对大型json的请求,所有这些请求都是压缩的(由服务器端PHP完成)。我的报告的目的是获取数据,并将所有数据显示在一个易于筛选和排序的表中。所以我找不到在这个特定的情况下使用“惰性加载”。

    这次我可能会使用vue js数据表库(不确定具体是哪个)。

    • 到底是什么占用了我这么多的记忆?我确信json结果已经收到。是将json呈现/解析到DOM吗?(我现在指的是datatable示例: https://datatables.net/examples/data_sources/ajax )

    • 在这种情况下,最佳做法是什么? 我开始研究这个问题,注意到有一些从2010年开始的帖子看起来一点都不相关。

    0 回复  |  直到 7 年前
        1
  •  1
  •   Ohgodwhy    7 年前

    HTTP响应的大小没有限制。其他事情是有限制的,例如:

    • 本地存储
    • 隐藏物
    • 饼干
    • 查询字符串长度
    • 内存(根据CPU限制或浏览器分配)

    相反,最有可能的问题是数据表的实现。您不能只将100000个节点插入到DOM中,而不期望会有某种类型的性能影响。此外,如果数据表在节点插入之前对每个数据进行逻辑处理,那么这也是一个很大的问题。

    您在这里所做的基本上是将分页从服务器传递到客户机,并带来严重的影响。

    如果必须返回这么大的响应,请考虑使用浏览器提供的存储选项之一(上面提到的一些选项)。然后分页存储的JSON响应。