Language agnostic 搜索参数

Language agnostic 搜索参数,language-agnostic,Language Agnostic,我在Startpage上有一个详细的搜索表单,用户可以在其中使用许多搜索选项 为用户会话保留搜索参数的最佳做法是什么。 如果把它们放进去,利与弊是什么 网址 会议 饼干 什么应该被用作最佳实践。我认为课程是最佳选择。如果您有多个页面,则最有可能需要保持一些全局状态——另一种选择是用户在移动到下一个页面时重新提交所有以前的数据 也就是说,您不能仅仅使用依赖于cookie的会话来存储会话标识符,至少不能没有一些额外的数据,这些数据实际上作为隐藏字段或URL参数在多个页面之间传递 问题是,仅仅使用

我在Startpage上有一个详细的搜索表单,用户可以在其中使用许多搜索选项

为用户会话保留搜索参数的最佳做法是什么。 如果把它们放进去,利与弊是什么

  • 网址
  • 会议
  • 饼干

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

我认为课程是最佳选择。如果您有多个页面,则最有可能需要保持一些全局状态——另一种选择是用户在移动到下一个页面时重新提交所有以前的数据

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

问题是,仅仅使用一个cookie,您就不会进行web对话,您就拥有了一个全局cookie,它在浏览器中的所有选项卡/窗口之间共享。如果用户打开一个新选项卡并开始新的搜索,会话cookie将被替换,而另一个选项卡中的会话将丢失

所以要么你:

  • 在URL中传递会话id,而不是使用cookie(不过要注意会话固定)
  • 包括一个额外的GET参数或标识对话的隐藏字段

我会选择Cookie,因为URL持久性会让你所有的URL都变得丑陋,链接共享效果不佳;不仅如此,有些设备可能会对很长的URL望而却步(你说有很多选择)。会话持久性无论如何都需要cookies;或查询字符串持久性以维护状态(返回到链接共享和丑陋的URL问题)

使用cookie,您可以存储大量数据(好吧,在合理范围内),并且不会影响您的URL


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

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

URL优点:易于阅读/写入
URL缺点:用户可以很容易地操纵它们,导致意外的结果,讨厌的URL

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

Cookie的优点:不会占用内存

Cookie cons:必须读/写文件,用户可以随时删除Cookie(会话中期),浏览器中共享的Cookie(任意会话数为1个Cookie)

您的URL cons听起来不是很好,因为搜索查询必须始终在“服务器端”处理,否则即使使用会话或Cookie,也可能很危险。