【问题标题】:Search form url structure搜索表单 url 结构
【发布时间】:2010-11-23 20:44:48
【问题描述】:

我们正在构建一个包含近 70 个属性的大型搜索界面。这些属性大部分是布尔值(只保留 0 或 1),大约 12 个是 int 值,有些是字符串。

goal: http://www.example.com/q/test_search/fdgREGd3vfS323
want to avoid: http://www.example.com/q/test_search/?val_12=1000&val_120=0&val_4=XY....

我们的目标是拥有一个包含所有搜索属性的短 url,这样就可以通过记住 url 来存储/发送准确的搜索数据。

我知道这可以通过url字符串中的许多参数来完成,但是我的老板是坚持不懈的。

我们已经想出了如何表示布尔值:

将值映射到二进制表示(00010101011),每个位置代表一个变量。我们将这个编码的字符串传递给一个较短的对应物(AB),例如十六进制。

但是当涉及到保存值的属性时,我们还没有决定如何进行。有什么想法吗?

【问题讨论】:

  • 人们不会记住任意二进制字符串中的占位符。考虑简单地为未指定的参数设置默认值,使用网络上其他地方已经使用的参数编码方案,不要重新发明轮子。
  • 保存值的属性...我假设您的意思是保存字符串的属性?
  • 我们将为属性颜色提供一个选择框,用户将选择一个值,例如20(颜色标识)。我们的目的不是让用户能够修改网址,而是让用户体面并最好编码

标签: php algorithm url search encode


【解决方案1】:

您可以进一步简化它。如果数据库没有问题,您可以将人们的搜索存储在数据库中,并给出类似这样的 URL:

user_searches:
 search_id | prop1 | prop2 | prop3 | .... | propN

并为用户提供如下网址:

http://example.com/search/(search_id)

我更喜欢使用这种方式,因为从用户的端点看不到正在发生的事情,它使网址保持简短,并且您可以(轻松)跟踪人们正在搜索的内容,以防您想优化您的网站以提高可用性: )。

[编辑] 此外,您可以为 (search_id) 使用哈希,这样其他用户就不会轻易猜到搜索。

【讨论】:

  • 一个好主意,必须考虑一下
【解决方案2】:

如果您的值是有限且静态的,请为它们分配一个数字。

如果所有可能的搜索参数的组合是有限的,还可以选择散列整个内容并将该散列用作您的静态 URL 参数。

【讨论】:

  • 考虑过,但由于 url 的长度,我们放弃了这个选项
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多