【问题标题】:Rendering Large JSON dataset causes browser to hang/crash/irresponsive渲染大型 JSON 数据集导致浏览器挂起/崩溃/无响应
【发布时间】:2018-06-20 17:18:26
【问题描述】:

我正在获取一个包含 1500 多条记录的大型 json 数据集,其中包含有关酒店的信息,并尝试将其呈现为导致浏览器挂起/崩溃或完全无响应的 HTML。

该应用程序是 CodeIgniter 3 (PHP/MySQL) 应用程序,其中一个控制器方法向远程服务器发送 curl 请求并接收我需要呈现的庞大数据集。

我将它全部呈现在服务器端,然后将视图作为 ajax 响应回显,这显然不起作用。

另一个问题是我无法从服务器中分块获取数据,要么一次全部获取,要么什么都不获取。

在这一点上,我没有想法,有没有比在服务器端处理整个数据集并将其回显到浏览器更好的方法来呈现数据集(显然响应大小太大了导致滞后)。

我愿意接受任何可能适用于这种情况的可行建议/解决方案。

我正在寻找的是一次呈现一大块接收到的数据集,当我滚动页面时,它会从剩余的数据集中加载更多数据。

我的目标是拥有一个快速渲染的页面/DOM,我可以在其中进行一些 DOM 操作,例如排序、过滤等,而不会导致整个浏览器崩溃。

任何帮助将不胜感激,我愿意尝试新事物。

问候,

Shyam S.

【问题讨论】:

  • 您在服务器上发送 cURL 请求,您不能使用浏览器中的 javascript 执行相同的请求吗?
  • 不,请求需要我无法公开的机密身份验证信息。

标签: php jquery json codeigniter-3 infinite-scroll


【解决方案1】:

最初的想法是批量检索,足够有用,不会过多降低用户体验。但是,你说要么全有,要么全无。在这种情况下,您似乎需要某种中间商店。也许您将 JSON 写入本地的 json 文件,然后在本地文件上批量执行 AJAX。一个文件只是一个例子,你可以把它放在内存中,但同样的问题也可能发生。你也可以把它放在数据库中。

无论您做什么,加载大量 HTML 都会导致浏览器运行缓慢。您最好加载 100 个(或任何合理的数量),并在用户向下滚动时触发下一组要加载的记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多