2015-02-09 33 views
6

我正在寻找在URL哈希参数中存储大量数据而不超过URL字符限制。用于URL哈希参数的Javascript字符串压缩

是否有任何常规的方式来压缩字符串长度,然后可以在另一个页面加载解码?

我见过LZW encoding用于类似的解决方案,但是会使用特殊字符吗?

+0

如果你有一个数据库,另一种解决方案是存储未压缩的字符串,给它一个id并在散列中使用它。客户端然后可以通过AJAX请求检索初始参数。这是一个额外的往返,但它可能是可以接受的。国家可以分享客户吗?如果不是,你可以将事件存储在'localStorage'中。 – plalx 2015-02-09 16:14:44

+0

@plalx谢谢,状态可以在客户端之间共享,但不幸的是需求没有后端存储。 – Curt 2015-02-09 16:27:04

+0

编码算法的问题在于,您不能确定永远不会超出限制,除非您知道所有可能的组合并且暗含静态数据。我相信潜在的压缩级别也将取决于您实际编码的内容。例如。 gzip在处理重复片段方面看起来相当不错。 – plalx 2015-02-09 16:27:45

回答

1

LZW编码技术上工程;您只需要将LZW编码的二进制转换为URL安全的base64,以便输出不包含特殊字符。 Here's an MDN article on base64 in JavaScript; base64的URL安全变体仅用-/替换+_。当然,除非你想存储的数据是非常可压缩的,否则你不太可能通过这么做来减少字符串的大小。

1

您可以查看smazshoco,它们是专为压缩短字符串而设计的。大多数压缩方法在URL长度限制之后才会真正起作用,所以如果您希望获得任何收益,则需要使用专用压缩器。然后,您可以使用Base 64等方案对二进制结果进行编码,或使用所有URI安全字符的更高效的编码。