一尘不染

对于全球站点性能来说,是许多小型ajax请求还是大型请求是更好的选择?

ajax

我有一个wordpress网站,该网站带有ajax搜索字段,该字段返回帖子列表,其中仅包含标题,URL,日期和类别。

我想对结果进行分页,以便每次最多显示10个结果。

我的疑问是:每次打开页面时都发出不同的请求,还是只发出一个请求以获取所有帖子,然后通过javascript管理分页(响应是i JSON),这很好吗?

做出较小的响应或做出较大的响应来发出更频繁的小型请求会更好吗?

我认为在现场使用初期,第一个解决方案是最好的。随着网站的发展,我不确定可扩展性。

你怎么看?

更新:我收到了两个非常好的答案,其中有更多的是解决用户界面方面的问题。

我希望您将注意力更多地放在性能方面。我的网站位于共享服务器上,但我们希望流量会快速增长,因为该网站将受到国际关注。我担心Wordpress将无法应付来自Ajax请求的增加的开销。

因此,回到问题上来,对于服务器的总负载,许多小请求,仅加载请求的结果页面还是加载所有结果的较大页面,哪个会更好?

考虑到并不是我想的所有用户都要检查我想第一个的所有结果页…


阅读 273

收藏
2020-07-26

共1个答案

一尘不染

正确答案是:“取决于”。

如果您要处理已知数量(每页10个结果,10页结果),并且希望尽快将所有这些结果提供给用户,那么我建议在500毫秒内下载块(10或20)计时器或类似的东西。

然后,您可以异步填充多余的后页,并相应地更新“总页数”控件。

从那里开始,您的用户将立即获得结果,并能够在2秒钟之内在所有数据之间来回切换。

如果您有一个需要立即访问所有数据的站点,并且需要显示40个结果,则需要进行大量转储。

如果您有一个无限滚动的网站,那么您希望获取几个页面长度。对于Twitter之类的东西,我可能会预先计算容器的平均高度,而不是屏幕高度。然后,我将下载3或4个屏幕长度的推文。从那里,当用户滚动到其第二或第三屏幕(分别为第三或第四屏幕)时,我将下载下一批。

因此,我的事件可能会附加到一个onscroll上,它会检查是否允许运行该事件(如果自上次运行以来至少有16ms,很明显,我们仍在滚动),那么它将检查它的位置,考虑到屏幕高度以及最后一批(`screen_bottom

= latest_batch.height * 0.75`或类似批次)的总高度,它与底部的接近程度。screen_bottom是相对于last_batch的,因为如果用户向上滚动,高于上一个批次,则screen_bottom完全是负数。

…或将它们归一化,这样您就可以处理百分比。

足以让您感觉好像数据一直在您身边。您不想在开始时就等待大的块加载,但是也不想在尝试移动时等待小块的加载。

因此,请根据您正在做的事情以及您希望用户如何使用数据来确定快乐的媒介是什么。

2020-07-26