搜索参数

时间:2010-07-14 14:26:34

标签: language-agnostic

我在“起始页”上有一个详细信息搜索表单,用户可以使用许多搜索选项。

为用户会话保留搜索参数的最佳做法是什么。 如果把它们放在

中有什么优点和缺点
  • URL
  • 会话
  • 曲奇

什么应该被用作最佳实践。

3 个答案:

答案 0 :(得分:1)

基于URL持久性会使您的所有网址变得丑陋而链接共享效果不佳,我会为Cookie而烦恼;不仅如此,但有些设备可能会对很长的URL感到犹豫(你说有很多选择)。会话持久性无论如何都需要cookie;或查询字符串持久性以维持状态(返回链接共享和丑陋的URL问题)。

使用Cookie可以存储大量数据(在合理范围内)并且不会影响您的网址。

但是 - 如果搜索参数持久性对您的应用程序至关重要,那么您应该有一个回退来检测cookie是否可用,如果没有,则转向URL持久性。

答案 1 :(得分:1)

最佳实践实际上取决于场景(包括业务案例,编程语言等)。但是,这里有一些高级别的优点/缺点。

网址优点:易于阅读/写入 网址缺点:用户可以轻松操纵它们,从而导致意外结果,令人讨厌的网址

会话专业人员:应该很容易以编程方式读取/写入(取决于语言),不必担心URL中的参数
会话缺点:占用更多内存(根据数据可能可以忽略不计)

Cookie专员:不占用内存
Cookie缺点:必须读/写文件,用户可以随时(会话中)删除cookie,浏览器内共享cookie(任意数量的会话1个cookie)

答案 2 :(得分:0)

我会说会话是最佳选择。如果你有几个页面,你很可能需要保持一些全局状态 - 另一种选择是用户在移动到下一页时重新提交所有以前的数据。

也就是说,你不能只使用依赖cookie来存储会话标识符的会话,至少在没有一些额外数据的情况下,这些数据实际上是作为隐藏字段或URL参数在多个页面之间传递的。 / p>

问题是只有一个cookie,你就不会有网络对话,你有一个全局cookie,它在浏览器的所有标签/窗口之间共享。如果用户打开新选项卡并开始新搜索,则会替换会话cookie,并且其他选项卡中的会话将丢失。

所以你要么:

  • 在URL中传递会话ID而不是使用cookie(但要小心会话固定)。
  • 包含标识会话的额外GET参数或隐藏字段。