【发布时间】:2012-06-12 09:07:20
【问题描述】:
我正在开发一个需要在查询字符串(特别是 GET 而不是 POST)上获取文件列表的网络应用程序,例如:
http://site.com/app?things=/stuff/things/item123,/stuff/things/item456,/stuff/things/item789
我想缩短那个字符串:
http://site.com/app?things=somekindofencoding
字符串不是很长,从 20 到 150 个字符不等。这么短的东西并不适合 GZip,但它确实有很多重复,所以压缩应该是可能的。
我不想要字符串的数据库或字典 - URL 将由与使用它的应用程序不同的应用程序构建。我想要一个可缩短此 URL 的可逆压缩。它不需要是安全的。
是否有现有的方法可以做到这一点?我在 C#/.Net 中工作,但很乐意从其他语言/堆栈中调整算法。
【问题讨论】:
-
/stuff/things/item*总是一样吗?如果是,你为什么不简单地传递123,456,789? -
对数据有什么限制?它们可以用 (e)BNF 表示吗?即数据格式是否规则?
-
@SteveB 并非总是如此,但一个电话可能很多
/stuff/things/item和另一个/files/item或/items/thing或其他。 -
如果你事先知道参数的种类,你可以使用类似:
http://site.com/app?things=123,456,789&files=ABC,DEF实际上,你应该描述url包含什么样的数据。 -
@RuneFS 数据大致是文件名,所以`a-zA-Z0-9_-,.~/`
标签: c# .net compression