将长字符串转换为简短的url友好字符串

时间:2012-09-09 16:31:02

标签: asp.net-mvc url web compression

这是我的情况:

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

我目前正在使用noSQL解决方案而不是RDBMS,因此我没有使用数据的短整数键,而是使用这些长而有人工作的固定长度键作为数据的聚簇索引。我项目中的这类内容可能如下所示:www.mysite.com/000_sub_2520552274112731878_497d19e/description-of-thing。显然,这不是一个好的,简短的网址。

我正在寻找的是从“000_sub_2520552274112731878_497d19e”之类的某种双向转换到一些更短,友好的网址字符串。

这样的事情可能吗?有没有解决方案?

1 个答案:

答案 0 :(得分:2)

您可以在不查找表的情况下将信息压缩为较短的字符串,尤其是当您知道“000_sub_2520552274112731878_497d19e”的结构一致时。我不知道你的标准是什么“短得多”。

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

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