在网页上为用户本地保存数据的最佳方法?

时间:2011-10-06 01:32:39

标签: asp.net

我在页面上有一个搜索框(webservice-fed results),我想在页面上的UL \ LI列表中保存用户的搜索条件。所以下次他们回到页面时,结果仍然存在......但是如果他们清除了他们的缓存,那么它就会被重置。

最好的方法是什么?...我可以轻松地在回发之间坚持下去,但对我来说这是一个新的。

谢谢, 史蒂夫

4 个答案:

答案 0 :(得分:1)

可能使用cookie,但请记住,你只能使用4kb数据。

否则,将会话存储在数据库中。然后将该记录ID保存到cookie。这样,您可以根据cookie中的ID从数据库加载数据。然后只需刷新30天左右的DB中的任何条目。

答案 1 :(得分:0)

由于睡眠不足,我用PHP给你一个答案。对不起,我会留下它,因为信息仍然正确,只是asp.net中的语法略有不同

php中有两种数据持久性选项; Cookie 会话

会话是服务器端,只要浏览器窗口保持打开状态就会持续。

Cookie是客户端的,持续到用户清除其缓存为止。

所以听起来你想要一个cookie选项。因此,在搜索查询处理器中,添加行

setcookie('search_' . time(), $_POST['search_query'], (time() + 10368000));

这将在客户端计算机上创建一个cookie,其名称为search_xxxx,其中xxxx是一个时间戳(每个cookie必须具有唯一的名称,否则它们将相互覆盖)。

最后的怪异计算是一个过期时间,将来会设置为120天。

然后在显示搜索页面的php文档中,您需要吐出所有这些cookie值。

foreach($_COOKIES as $k => $v) {
   if(substr($k, 0, 7) == 'search_') echo($v . '<br />');
}

这将吐出客户端计算机上找到的每个搜索词。 if语句是为了确保它只显示搜索词cookie,而不显示其他词。

答案 2 :(得分:0)

使用cookie。假设您从名为List<string>的{​​{1}}个搜索字词开始,请执行:

terms

然后,当您需要再次访问这些条款时(将数据绑定到Repeater,或以其他方式处理以在页面上显示):

var sb = new StringBuilder();
foreach (var t in terms) sb.Append(t).Append(";")
var c = new HttpCookie("terms");
c.Value = sb.ToString().TrimEnd(';');
c.Expires = DateTime.Now.AddDays(30);
Response.Cookies.Add(aCookie);

答案 3 :(得分:0)

Cookie可能是您今天的解决方案,但HTML5 localStorage最终将是最好的选择。现在只有现代浏览器版本支持,取决于您的用户。