0

我有一个 Web 应用程序,它使用各种查询字符串参数来做其他事情。这些查询字符串参数是附加属性,这意味着用户操作会更改提供的内容,甚至更改提供内容的顺序。

Example URLs:
http://dubdubdub.com/MyPage.aspx?MyParam=100+200+300
http://dubdubdub.com/MyPage.aspx?MyParam=200+300+100

在上面的示例 URL 中,两者都导致相同的页面呈现。页面动态加载,提取属性并将它们洗牌到另一个使用它们的服务。顺序无关紧要。

我想找到一种方法将 MyParam 值压缩为某种散列字符串,以便我的 Urls 可能看起来像这样......

http://dubdubdub.com/5kjh345i/MyPage.aspx

我考虑过简单的加密/解密,但这导致了一个比理想字符串更大的字符串。

我目前正在玩弄内存哈希表的想法,在应用程序启动时从数据库中提取,但这需要我用所有可能的排列填充数据库......不是我想做的事情。

其他选择?

4

1 回答 1

0

创建属性集的有效二进制表示,然后使用 base64 将其编码为 URL。

这将您的问题减少为决定有效二进制表示的问题之一,这是一个数据压缩问题。霍夫曼编码或算术编码之类的想法可能很有用 - 它实际上取决于您的属性集的范围。

于 2010-11-11T04:32:28.820 回答