我有一个Web应用程序,允许用户搜索某些条件,选择一个对象,编辑它然后返回到上一个搜索。所有编辑都在链接到返回结果的数据网格的单独页面上进行。我想知道存储先前搜索参数的最佳方法是什么,这样当它们返回到网格时,它们具有之前使用的相同搜索。我想出的最佳选择是使用每个选定参数的NameValue集合,并在用户按下搜索按钮时将其存储到Session或cookie。还有其他想法可以更好地解决这个问题吗?
答案 0 :(得分:2)
如果这是一个常见查询(在所有用户中都是通用的),您可能希望缓存结果,并在返回网格时简单地绑定到缓存的结果。它将为您节省再次拨打电话的处理和带宽费用。
如果是特定于用户的查询并且您拥有资源,则可能需要缓存结果。
如果它是特定于用户的查询并且您没有资源,则缓存参数(如您所述)可能是最佳选择。
提出强大的缓存方案可能会非常棘手。请查看memcached,看看其他人是如何解决的(请注意ASP.NET Memcached Providers)。
答案 1 :(得分:1)
在我们的应用中,我们有几十个带搜索字段的列表。我们设计了一个简单的实用程序类,它根据当前页面生成一个唯一的字符串,并将其存储在会话中。
public static string GenerateSessionKeyFromPage(Page page)
{
return "__" + page.Request.Path;
}
这使我们可以存储搜索字段,而无需在每次添加新页面时都维护NameValue集合。