我正在寻找一种为用户存储搜索偏好的方法

时间:2015-06-07 14:22:55

标签: c# asp.net sql-server parameters

我有一个C#/ ASP.net应用程序。当用户使用几个标准下拉列表和文本框搜索数据时,我运行SQL查询以获取所有用户搜索首选项,然后根据返回的内容自动填充控件。然后,用户可以使用这些预设进行搜索,或者更改任何选项并再次搜索。

问题是,每次加载搜索页面时都需要调用DB。我希望有一种方法可以在用户第一次登录时获取所有首选项,然后以某种方式存储它们,以减轻我的SQL Server数据库上的负载。有没有人遇到过这个问题并发现了一种有效的方法来处理它?<​​/ p>

2 个答案:

答案 0 :(得分:2)

使用旧的好东西怎么样 - Cookies?

HttpCookie aCookie = new HttpCookie("SearchPreferences");
aCookie.Values = /* your collection of preferences */;
aCookie.Expires = /* DateTime of expiration */;
Response.Cookies.Add(aCookie);

...或者当用户退出时会破坏的会话?

if (Session["SearchPreferences"] != null) {
    /* loading the preferences */
} else {
    /* preferences are already loaded */
}

您还可以使用Session.TimeOut设置过期时间。

修改

从下面的讨论中可以看出,这两种方法都有其优缺点。为此,我认为增加一些应该让你有机会选择最适合你的。

System.Web.Caching.Cache似乎是最现代,最快速的方式。

Cache c = System.Web.Caching.Cache();
c.Add(key, value, dependencies, absoluteExpiration, 
      slidingExpiration, priority, onRemoveCallback);

但是,仍然有一个ApplicationState选项,它是一个可以在应用程序运行时保存您的值的对象。

答案 1 :(得分:1)

如果您正在寻找客户端持久性,CookiesSessions(仍然依赖于客户端上的cookie,除非cookieless)是一个选项(请参阅上一个答案) 。您还可以查看较新的client side persistence选项(其中Web Storage拥有最多的浏览器支持)。 HTH ...