缓存排序/属性可以更改的分页搜索结果的最佳实践是什么?
假设在我的应用程序中,有人想要查看最近的20个讨论线程(在10,000个线程中)。一个请求将通过发送到数据库,servlet
以XML / JSON形式从讨论线程表中获取前20条记录。如果他们随后要查看下一个20,则转到结果的下一页,这会触发另一个请求以获取下一个批次(限制和偏移= 20,依此类推)。
为了减少服务器负载和客户端等待,我想缓存结果的前几页。但是,我有两个问题:
- 结果显示的表可以按多个属性(即,线程创建日期,线程作者,最后发布日期)排序。这意味着没有上下文(即我们排序的依据)之类的“前20个结果”这样的语句是没有意义的。然后,前端如何与后端通信已加载的内容?我的第一个想法是对每个结果使用ID,但是在随后的请求中将它们发送回服务器(并根据它们过滤结果)就像将所有内容盲目地发送回一样耗时。我怎样才能做到这一点?
- 如果先前返回的结果的属性(即最新日期)改变了怎么办?然后,我们需要一种检查每个结果的方法,以查看自页面调入以来是否已在服务器端对其进行了修改。我该怎么做?
您的示例有些粗糙。如果只有100个线程,则最好一次下载全部100个线程。如果您要从10,000分中提取20分,那就另当别论了。
—
Dan Pichelman
@DanPichelman对不起,我有点不清楚。大概是10,000。
—
goodsquishy
为清楚起见,已编辑数字。
—
goodsquishy
这是http吗?如果是,为什么不仅基于url进行缓存?在网址中包含所有参数。如果是浏览器,请尝试利用浏览器缓存。如果是应用程序,请设置缓存过期时间。Android的Volley运作良好。
—
2015年