假设我有一个带有许多记录的表格,我想要将其随机呈现给用户。我还想让用户能够翻页,因此必须保留某种排序方式,至少在一段时间内是这样。
应用程序基本上仅使用 AJAX,并且对已访问页面使用缓存,因此即使我始终提供随机结果,当用户尝试返回时,他将获得上一页,因为它将从本地缓存加载。
问题是,如果我只返回随机结果,可能会有一些重复项。每个页面包含6个结果,因此为了防止这种情况,我需要做类似于
那种解决方案的巨大弊端在于,服务器端无法缓存任何内容,因为每个用户都将请求不同的数据。
另一种解决方案可能是为记录创建另一列来对其进行排序,并且每 插入时间单位 就对其进行洗牌。问题在于,我需要对表中的每个记录设置一个序列外的随机数,这将需要与记录数量相同的查询次数。
如果相关的话,我正在使用 Rails 和 MySQL。
应用程序基本上仅使用 AJAX,并且对已访问页面使用缓存,因此即使我始终提供随机结果,当用户尝试返回时,他将获得上一页,因为它将从本地缓存加载。
问题是,如果我只返回随机结果,可能会有一些重复项。每个页面包含6个结果,因此为了防止这种情况,我需要做类似于
WHERE id NOT IN(1,2,3,4...)
的操作,在其中放置所有先前加载的ID。那种解决方案的巨大弊端在于,服务器端无法缓存任何内容,因为每个用户都将请求不同的数据。
另一种解决方案可能是为记录创建另一列来对其进行排序,并且每 插入时间单位 就对其进行洗牌。问题在于,我需要对表中的每个记录设置一个序列外的随机数,这将需要与记录数量相同的查询次数。
如果相关的话,我正在使用 Rails 和 MySQL。