假如记录数量非常巨大,有几十万甚至上百万
分页诸如/page/N 这样的链接地址,好处在于(我认为),易于 seo,并且有现成插件
但是我发现这种分页形式对于数据库、缓存来说并不友好
数据库方面:pagination 主要使用的 sql 的 limit [offset], rows,而 limit 的方式是取出 offset 之前的记录再抛弃掉,所以对于大页码来说性能是有损害的。
缓存方面,一般我们使用的都是从最新往后翻页,一页显示 X 条记录,当有新的记录出现的时候,会形成连续反应,后面的页面全都缓存失效
用户体验方面,如果出现新的记录,老的记录会被顶到后面,那么在翻页的时候,经常可以看到之前已经看到过的文章,对于用户来说很不爽。
如果使用偏移量,比如 domain.com/articles/s/N 这种形式,则可以解决以上三种问题。 如果是按 id 排序,那么就是 where articles.id < N limit rows
翻页过程中的用户,可以保持原来的翻页链接,并且能够使用缓存,如果有新记录,也不会影响翻页的体验。
但这样的坏处可能在于 SEO 上出现太多页面
有没有朋友来讨论一下