这取决于当地因素和实际使用模式。更大的查询需要更多的内存来存储数据,并且根据您使用的插件,可能需要将其处理到响应中,因此内存不足的风险更大。如果响应更大(即页面HTML更大),则需要更多的时间将页面传输到浏览器,使页面对于带宽较低的用户来说似乎加载速度较慢。
这就是为什么人们在“加载更多”和无限滚动机制上浪费时间的原因,但由于技术一直在变得更好更快,我认为不可能给出一个数字来作为决定何时必须使用AJAX而不仅仅是“很好拥有”的阈值。
用户体验视角可能是决定两者之间的最重要因素。如果这些帖子是供人阅读的文章,那么即使是20篇也可能太多了,但如果是电子表格,你可能想一次加载全部内容。
EDIT
我错过了问题最重要的部分,那就是随机性。当然,随机性和分页不能很好地结合在一起,尽管您可以强制它们这样做,但实现随机性的一个更简单的方法是查询所有帖子并存储在一个数组中,对数组进行随机化,并将其作为临时存储一个小时。
$posts = get_tranient(\'my posts\');
if (!$posts) {
$posts = get_posts(your args);
shuffle($posts);
set_transient(\'my posts\',$post,HOUR_IN_SECONDS);
}
... slice the part of $posts you are interested in and work on it ...
当您在小时边界上提供页面时,这种逻辑仍然存在漏洞,但实际上,没有人会注意到每小时一次的重叠结果。从好的方面来看,这意味着您只能每小时运行一次慢速查询,而不是针对每个请求。
至于问题的更新部分,我从来没有亲自测试过,但内存大小与帖子本身的文本大小并不是线性相关的,你需要考虑与帖子相关的元数据,然后是非持久性内存缓存,它可能会使内存使用量增加一倍(应该有办法防止缓存,但我现在找不到)。
虽然您可能可以一次提供所有300条引文,但这没有什么意义,即使通过AJAX提供更多引文,因为人类不会阅读那么多“旁白”文本。