gpt4 book ai didi

c - 如何实现无损 URL 缩短

转载 作者:可可西里 更新时间:2023-11-01 16:34:58 25 4
gpt4 key购买 nike

首先,一些上下文:

我正在尝试在我自己的服务器上实现 URL 缩短(如果重要的话,在 C 中)。目的是避免长 URL,同时能够从缩短的 URL 恢复上下文。

目前我有一个实现,可以在服务器上创建一个 session ,由特定的 ID 标识。这可行,但会消耗服务器上的内存(并且不需要,因为它是资源有限的嵌入式服务器,并且该设备的主要目的不是提供网页而是做其他很酷的事情)。

另一种选择是使用 cookiesHTML5 webstorage将 session 信息存储在客户端中。

但我正在寻找的是将缩短的 URL 参数存储在我附加到 URL 的一个参数中并能够从该参数重建原始参数的可能性。

首先想到的是使用 Base64 -encoding 将所有参数合并为一个,但这会产生更大的 URL。

目前,我正在考虑压缩 URL 参数(使用一些压缩算法,如 zipbz2 等),对其进行 Base64 编码压缩二进制 blob 并将该信息用作上下文。当我获得参数时,我可以进行 Base64 解码、解压缩结果并获得原始 URL。

问题是:是否还有其他我忽略的可能性,即我可以使用无损压缩大量 URL 参数成一个较小的参数


更新:
home 的评论之后,我意识到我忽略了压缩本身会增加压缩数据的一些开销,使压缩数据甚至比原始数据更大,因为开销,例如 zipping添加到内容中。
所以(正如 home 在他的评论中所说),我开始认为压缩整个 URL 参数列表只有在参数超过一定长度时才真正有用,否则,我可能会结束拥有比以前更大的 URL。

最佳答案

您可以随时进行自己的压缩。如果您只是应用一些 huffman编码,结果总是会更小(但是 base64 编码后,它会增长一点,所以净效果可能不是最佳的)。

我在我工作的嵌入式项目上使用自定义压缩策略,我首先使用 lzjb (lempel ziv 派生,点击源代码链接,非常严格的实现(来自 open solaris))然后是霍夫曼编码压缩结果。

不过,lzjb 算法在非常短的输入上表现不佳(~16 字节,在这种情况下我不压缩)。

关于c - 如何实现无损 URL 缩短,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7118159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com