0

我们正在构建一个包含近 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),例如十六进制。

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

4

2 回答 2

2

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

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

并给用户网址,如:

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

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

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

于 2009-08-28T20:33:29.183 回答
0

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

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

于 2009-08-28T21:39:26.493 回答