首先,一点上下文:
我正在尝试在我自己的服务器上实现 URL 缩短(在 C 中,如果这很重要)。目的是避免使用长 URL,同时能够从缩短的 URL 恢复上下文。
目前我有一个在服务器上创建会话的实现,由某个 ID 标识。这可行,但会消耗服务器上的内存(这是不希望的,因为它是资源有限的嵌入式服务器,并且设备的主要目的不是提供网页,而是做其他很酷的事情)。
另一种选择是使用cookie或HTML5 网络存储将会话信息存储在客户端中。
但我正在寻找的是将缩短的 URL 参数存储在我附加到 URL 的一个参数中并能够从该参数重新构造原始参数的可能性。
第一个想法是使用Base64编码将所有参数放在一个中,但这会产生更大的 URL。
目前,我正在考虑压缩 URL 参数(使用一些压缩算法,如zip、bz2等),对压缩的二进制 blob 进行 Base64 编码并将该信息用作上下文。当我得到参数时,我可以进行 Base64 解码,解压缩结果并获得原始 URL。
问题是:是否还有其他我忽略的可能性可以用来将大量 URL 参数无损压缩成一个较小的参数?
更新:
在home发表评论后,我意识到我忽略了压缩本身给压缩数据增加了一些开销,使得压缩数据甚至比原始数据更大,因为例如压缩会增加内容的开销。
所以(正如他的评论中所说的那样),我开始认为压缩整个 URL 参数列表只有在参数超过一定长度时才真正有用,否则,我最终可能会拥有比以前更大的 URL .