我一直在做一些关于无限滚动的研究,并且遇到了人们所说的"懒惰加载"。现在我已经在我的一个网站元素(聊天框)上完成了,现在我有两种方法可以做到这一点。但我不能决定哪一个比另一个更有效。以下是我的方法:
我们说我从数据库获得1,000,000行数据,我需要获取所有数据
第一路:
从数据库加载内容,将其截断在服务器端代码(PHP)上,然后只显示前50个。
当用户在页面上滚动时,将发送另一个请求以再次获取结果并显示下一个50,依此类推......等等。
第二路:
从数据库加载内容,在我的HTML中将其作为隐藏元素呈现,但仅显示前50个,然后在用户滚动时显示50个隐藏元素。
第一种方式是在需要显示更多结果时从服务器请求。 第二种方式只是从服务器发出1个请求,然后隐藏结果,除了应该显示的前几个。
我做两者中的任何一个都没有问题。 现在的困境是,第一种方式是发送更多的HTTP请求,而第二种方式(虽然只发送一个HTTP请求)是在单个请求中获取大量数据,这可能很慢。
哪种方法更好",如果还有其他选项,请告诉我。
答案 0 :(得分:0)
我知道这是个老问题,但想发表我的看法:
第一种方法
总是特别喜欢这种数量的行,仅请求设置一定数量的行会更有效,并且如果用户希望查看更多行(例如,单击下一页),则会向服务器提出另一个请求以获取下一页,响应时间会好很多,如果还需要其他处理才能返回给用户,这也将使客户端更容易操作列表。 您还需要确保在数据库查询中应用了限制,否则您会将所有对象加载到内存中效率不高。
第二种方式
如果您一次获取1,000,000行,则用户将不得不等待直到响应返回,这也可能导致不良的用户体验,因为返回的行数持续增长,响应时间将持续增长,您可能会遇到时间最终,还应考虑在返回之前将所有这些对象加载到服务器的内存中。 我看到的这种方法的唯一用例是,如果您的列表不会随时间增长,或者您有一定数量的项目不影响响应时间。