处理返回搜索结果的网页的正确方法是什么?该结果可能在不同时刻有不同的结果?
即第一次返回查询可能包含与用户单击第 2 页并再次运行查询时不同的结果。
大多数人如何处理这种情况? 一般来说,我正在使用内部 ASP.Net 应用程序(其中安全性/带宽不是很大的问题),因此我将结果存储在 ViewState 中,并在回发时处理该数据,而不是查询数据库。
使用外部 WWW 的正确方法是什么? 我最好的猜测是将结果存储在临时数据库表中(不是字面上的临时表;我想“暂存”可能更准确),但我认为该表会因插入/删除等而受到很大的影响,我认为你需要一个清理桌子的过程,这似乎不是一个非常优雅的解决方案。
我离得近吗?
大多数应用程序不处理它......他们认为结果不会改变到足以保证某种缓存机制。但是,如果您正在处理高度实时的数据(例如 Twitter 结果),您的分页链接很可能如下所示:
?q=your+query&olderthan={last result shown}&limit=10
...其中
{last result shown}
是当前页面上最后一个结果的 ID。此 ID 将用于允许您查询早于指定 ID 的结果:SELECT * FROM table WHERE id < {last result shown}
。
虽然它可能非常占用内存,但您也可以考虑将搜索结果存储到会话中并在会话中分页,而不是每次都运行查询。
一次会议怎么样?这是特定于会话的临时数据,那么为什么不使用会话呢?
我已经很久没有使用过asp了(从.NET时代之前开始:-)),但是在PHP或rails中,你可以使用会话来进行任何临时存储。您可以使用本地文件系统(在服务器上)或数据库作为会话存储。有很多方法可以优化,所以我不会担心数据库会受到打击,除非你有数千个用户。此外,数据库设计用于处理数千次插入和删除 - 任何主要数据库 - SQL 服务器、MySQL、PostgreSQL 都不应该有任何问题。