让我们说我想在博客上加载评论,这样最初只显示10个最新的评论,下一批10个在滚动时加载延迟。
选项A:在页面加载时从服务器发送整个结果数组,并在客户端处理渲染10。
选项B:在页面加载时加载10,并根据需要发送10个以上的ajax请求。
假设对象的数量可以达到40,000 - 在页面加载时将这么大的json数组发送到客户端是否可以?
我认为权衡利弊:使用选项A,您可以最大限度地减少到数据库的访问,但是您可能会向客户端发送太多数据(40,000记录json数组≅7mb),这对移动用户来说并不理想。使用选项B,您可能会有太多的数据库访问。
这是最好的做法吗?也许在中间某处妥协?也就是说,急切加载200个对象到客户端,最初只渲染10并再渲染10个,直到200个对象用完为止,然后根据需要从服务器加载延迟?希望了解其他人如何解决这个问题。
答案 0 :(得分:1)
我会完全按照您的建议进行小额摊销改进。
首先,您预先加载200个项目,并以10个为一组进行渲染。当一半已加载的项目读取时,您预先加载下一个200项。
根据您的任务,您可以更进一步,动态计算下一批评论的大小。如果用户是慢速阅读器,则将批量大小减小到100.如果它们快速滚动,则批量增加到1000。
答案 1 :(得分:0)
有点选项B. 您可以在服务器中创建专用的api端点,如果您使用Node.js或类似技术则非常容易。您只需在即将到达页面末尾时调用scrollfire事件。您可以使用下一个10或20个元素的索引ping服务器以获取所需的数据。 这里的关键是估计您呼叫的数据的大小和类型。也是数据库的体系结构。如果您的数据库设计良好,即使扩展到数千个并行用户,也不会遇到任何性能问题。