2

我创建了一个返回产品列表的 Web 应用程序。在此页面上,它允许用户搜索一系列不同的搜索条件。

一旦用户搜索并将结果返回到页面上的表格,用户就可以编辑产品。然而,在返回产品列表页面后,页面会重新加载,并再次显示所有产品。

我想知道保留搜索结果的最佳方法是什么,并在返回搜索页面时保留以前的条件。

我发现了一些关于堆栈交换的帖子——在 ASP.NET 中存储以前搜索条件的最佳方式——可能是更好的帖子之一。

有谁知道我可以如何保持搜索条件,所以当用户返回搜索页面时,以前的搜索条件和结果保持不变。

非常感谢。

4

1 回答 1

1

如果您的整个搜索可以通过查询字符串表示,那么将查询字符串(或搜索条件)存储在 cookie 中是非常有意义的。当然,假设 cookie 已打开。

当用户导航到搜索页面时,您可以从 cookie 中读取查询字符串并返回相关结果。

在高负载系统中,客户端状态是一种很好的前进方式。如果您有数百个并发用户,您不希望将状态存储在服务器上。

编辑

好的,假设您决定将结果存储在会话中。这有什么问题?您的结果可能不再相关。底层数据存储中的某些内容可能会发生变化,您最终将显示不准确的数据。

假设您最终将相当大的结果集存储在内存中 - 每个用户 100kb。假设您有 200 名并发用户,那么您已经看到了至少 100kb * 200 的存储空间。这不到 20MB 的存储空间,不包括您可能存储在会话中的其他数据。随着系统的增长,扩展成本会变得很高。

另一方面,如果您将搜索条件存储在客户端上,那么您可以轻松扩展到数千个用户。您所要做的就是从 cookie 中检索他们的搜索条件并重新执行它。

我个人会寻找一个很好的理由将数据存储在会话状态中。即存储用户敏感数据。

关于这个问题- 是的,它会起作用,但正如我已经说过的,如果您决定将结果存储在服务器上,它的扩展性就不会太好。此外,如果重新启动应用程序池或重新启动 IIS,您将丢失搜索条件。

于 2012-09-11T09:44:46.190 回答