【发布时间】:2017-12-27 06:10:21
【问题描述】:
我在 Laravel 中使用 DataTable 插件。我在某些地方有 3000 个条目的记录 但是当我加载该页面时,它会在浏览器中加载所有 3000 条记录,然后创建分页,这会减慢页面加载速度。
如何解决这个问题或正确的方法
【问题讨论】:
标签: laravel
我在 Laravel 中使用 DataTable 插件。我在某些地方有 3000 个条目的记录 但是当我加载该页面时,它会在浏览器中加载所有 3000 条记录,然后创建分页,这会减慢页面加载速度。
如何解决这个问题或正确的方法
【问题讨论】:
标签: laravel
使用服务器端处理。 从一些 Laravel 包中获得帮助。如 Yajra 的:https://yajrabox.com/docs/laravel-datatables/
【讨论】:
通常您可以在前端、后端(服务器或数据库端)或两者的组合上解决分页问题。
没有包的服务器端处理意味着设置 TOP/FETCH 或在从服务器返回的数据中创建行。您还可以加载少量(例如 20 个),然后当用户滚动到列表底部时,再加载 20 个左右。我也提到了前端处理的包含,因为我不确定你的用例是什么,但我想任何给定的用户实际上一次需要查看 3000 行是非常罕见的。
鉴于 Data Tables 似乎具有对数据进行分页的内置功能,我认为 @tersakyan 基本上是正确的 — 您想要的是某种形式的后端过滤或对数据行进行分页以限制发送到的内容前端。我不知道该包是否适合您或您的设置是什么样的,但分页也可以直接从通过 SQL 返回数据的数据库实现(例如使用 TOP/FETCH),或者可以在控制器中实现或通过跟踪数据页面并从服务器“一次加载一个页面”然后将其加载到表中来提供服务。您只需要一个唯一键来关联特定请求的每个“页面集”。
但为了性能,您希望避免大数据请求和对大数据集的操作。因此,您越是限制在应用程序使用它的任何阶段抓取或处理的数据量,原则上您的应用程序的性能就会越高。
【讨论】: