我有一个C#/ ASP.net应用程序。当用户使用几个标准下拉列表和文本框搜索数据时,我运行SQL查询以获取所有用户搜索首选项,然后根据返回的内容自动填充控件。然后,用户可以使用这些预设进行搜索,或者更改任何选项并再次搜索。
问题是,每次加载搜索页面时都需要调用DB。我希望有一种方法可以在用户第一次登录时获取所有首选项,然后以某种方式存储它们,以减轻我的SQL Server数据库上的负载。有没有人遇到过这个问题并发现了一种有效的方法来处理它?</ p>
答案 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)
如果您正在寻找客户端持久性,Cookies
和Sessions
(仍然依赖于客户端上的cookie,除非cookieless
)是一个选项(请参阅上一个答案) 。您还可以查看较新的client side persistence选项(其中Web Storage
拥有最多的浏览器支持)。 HTH ...