【发布时间】:2018-03-05 01:49:36
【问题描述】:
假设我想在博客上延迟加载 cmets,这样一开始只显示 10 个最新的 cmets,下一批 10 个在滚动时延迟加载。
选项 A:在页面加载时从服务器发送整个结果数组,并在客户端一次处理 10 个渲染。
选项 B:在页面加载时加载 10 个,并根据需要再发送 10 个 ajax 请求。
假设对象的数量可以达到 40,000 - 在页面加载时向客户端发送这么大的 json 数组是否可以?
我认为权衡是:使用选项 A,您可以最大限度地减少访问数据库的次数,但您可能会向客户端发送过多的数据(40,000 条记录的 json 数组 ≅ 7mb),这对于移动用户来说并不理想。使用选项 B,您可能访问数据库的次数过多。
在这方面有最佳实践吗?也许在中间的某个地方妥协?也就是说,向客户端急切加载 200 个对象,最初只渲染 10 个,然后再渲染 10 个,直到用完 200 个对象,然后根据需要从服务器延迟加载?想看看其他人是如何解决这个问题的。
【问题讨论】:
-
您在一篇博文中有 40,000 cmets? “数据库访问次数过多”是什么意思——这对您来说是个问题吗?
-
博文只是一个例子。访问数据库是昂贵的操作:让成千上万的用户重新查询数据库以获取小块数据,当它可以在客户端处理时并不理想,但我试图在不预先加载太多的情况下找到中间立场.
-
使用 7MB 的 JSON,您肯定会冻结浏览器!移动和桌面。这需要一段时间来解析。请在您的计算机上尝试。
标签: javascript json ajax lazy-loading