分页:存储搜索结果

时间:2009-11-06 19:50:08

标签: search paging

处理网页的正确方法是什么,该网页会返回搜索结果,这些搜索结果可能会在不同时刻产生不同的结果?

即。第一次返回查询可能包含用户单击第2页时再次运行查询时的不同结果。

大多数人如何处理这种情况?通常我正在使用内部ASP.Net应用程序(其中安全性/带宽不是很大的问题),因此我将结果存储在ViewState中,并且在回发时处理与查询数据库相反的数据。

外部WWW使用的正确方法是什么?我最好的猜测是将结果存储在一个临时数据库表中(不是字面上的临时表;我猜'分段'可能更准确),但我认为该表会因插入/删除/等而受到相当大的影响,而且我认为你需要一个清理桌面的过程,这似乎不是一个非常优雅的解决方案。

我在附近吗?

3 个答案:

答案 0 :(得分:2)

大多数应用程序都没有处理它......他们认为结果不会改变到足以保证某种缓存机制。但是,如果您正在处理高实时数据(例如Twitter结果),您的分页链接很可能如下所示:

?q=your+query&olderthan={last result shown}&limit=10

...其中{last result shown}是当前页面上最后一个结果的ID。此ID用于允许您查询早于指定ID的结果:SELECT * FROM table WHERE id < {last result shown}

答案 1 :(得分:1)

虽然它可能占用大量内存,但您也可以考虑将搜索结果存储到会话中并在会话中进行分页,而不是每次都运行查询。

答案 2 :(得分:1)

会话怎么样?这是特定于会话的临时数据,为什么不使用会话?

我还没有完成asp(从.NET时代开始:-)),但是在PHP或rails中,你会将会话用于任何临时商店。您可以使用本地文件系统(在服务器上)或DB作为会话存储。有一些方法可以优化,所以除非你有成千上万的用户,否则我不会担心数据库受到重创。 DB也设计用于处理数千个插入和删除 - 任何主要的DB-SQL服务器,MySQL,PostgreSQL都不应该有任何问题。