1

这是我的情况:

我有一个 MVC 网站,其中包含指向我的数据存储中存在的各种“事物”的链接。像许多网站一样,我希望为这些内容提供简短的描述性 url,例如www.mysite.com/12/description-of-thingurl 中的“12”代表数据存储中数据的密钥。

我目前正在使用与 RDBMS 相对的 noSQL 解决方案,因此我使用这些长的、人为的、固定长度的键来充当数据的聚集索引,而不是数据的短整数键。在我的项目中这样的事情的 url 可能看起来像这样:www.mysite.com/000_sub_2520552274112731878_497d19e/description-of-thing. 显然,这不是一个漂亮的短网址。

我正在寻找的是从“000_sub_2520552274112731878_497d19e”之类的东西到一些更短、对 url 友好的字符串进行某种双向转换。

这样的事情可能吗?是否已经存在任何解决方案?

4

1 回答 1

2

您可以将信息压缩成较短的字符串而无需查表,尤其是如果您知道“000_sub_2520552274112731878_497d19e”的结构是一致的。我不知道您对“更短”的标准是什么。

例如,如果您知道它将是 ddd _sub_dddddddddddddddddd _hhhhhhh 其中 d 是十进制数字,h 是十六进制数字,那么您可以将第一个 ddd 编码为 10 位,第二组 d 编码为 64 位,最后一组h 为 28 位。你不编码_sub_or _,因为你知道它们总是在那里。您总共有 102 位,您现在可以在 base 64 中编码 17 个字符(小于原始长度的一半),或者在 base 85 中编码 16 个字符。我没有检查,但应该有一组 85 URL 安全人物。

如果您不知道该密钥的结构,那么压缩量会更少,但您仍然可以获得一些。

于 2012-09-09T17:56:55.773 回答