【问题标题】:Lossless compression method to shorten string before base64 encoding to make it shorter?在base64编码之前缩短字符串以使其更短的无损压缩方法?
【发布时间】:2011-05-07 21:06:38
【问题描述】:

刚刚构建了一个用于预览 HTML 文档的小型 Web 应用程序,该应用程序生成的 URL:s 包含 base64 编码数据中的 HTML(以及所有内联 CSS 和 Javascript)。问题是,URL:s 很快变得有点长。首先压缩字符串而不丢失数据的“事实上的”标准方式(最好是Javascript)是什么?

PS;前段时间我在学校读到关于 Huffman 和 Lempel-Ziv 的文章,我记得我真的很喜欢 LZW :)

编辑:

找到解决方案;似乎 rawStr => utf8Str => lzwStr => base64Str 是要走的路。我正在进一步致力于在 utf8 和 lzw 之间实现霍夫曼压缩。到目前为止的问题是,当编码为 base64 时,太多的字符会变得很长。

【问题讨论】:

    标签: javascript compression base64 huffman-code lzw


    【解决方案1】:

    查看this answer。它提到了 LZW 压缩/解压缩的功能(通过http://jsolait.net/,特别是http://jsolait.net/browser/trunk/jsolait/lib/codecs.js)。

    【讨论】:

    • 您先生几乎拯救了我的一天!很棒的库,虽然 base64 编码器并不热衷于编码 lzw 编码的字符串。
    • 我找到了一个可以工作的扩展 base64 编码器/解码器:webtoolkit.info/javascript-base64.html。与链接到它的 lzw-en-/decoder 结合使用,一切正常。感谢您的帮助!
    • 找不到页面 - womp womp
    【解决方案2】:

    您将很难在一个 URL 上获得非常多的压缩,它们太短并且不包含足够的冗余信息以从 Huffman / LZW 样式算法中获得很多好处。

    如果您对可能的 URL 的空间有限制(例如,所有内容往往位于同一组文件夹中),您可以对 URL 的某些部分进行硬编码以在客户端扩展 - 即作弊。

    【讨论】:

    • 要压缩的 HTML 代码将有几千个字符,并且包含很多类似的字符。我相信/希望压缩会产生重大影响。
    • 啊,好吧——它们真的有点长!另一个考虑因素 - 如果您确保对 HTML 文档启用 GZIP 压缩(即通过 IIS),那么无论如何您都会对整个 HTML 文档进行压缩。在那种情况下,在编码之前压缩 URL 并将它们放在 HTML 中是多余的吗?让浏览器在代码中进行解压而不是在 JS 中进行解压可能会快得多。
    • 对不起,我还没有完全关注你。我刚刚阅读了有关 GZIP 的信息,这似乎是比 LZW 更好的选择。浏览器中是否有对 GZIP 编码/解码的原生支持?将 GZIP:ed 字符串直接放入 URL 是否安全?
    • 您可以在 IIS 上打开 GZIP 压缩。见microsoft.com/technet/prodtechnol/windowsserver2003/library/iis/…。然后,如果浏览器支持,则任何 HTML 页面在发送到浏览器之前都会经过 GZIP(或 DEFLATE)处理。浏览器在收到 HTML 时会解压缩。这可能会使您的 GZIP 页面的一小部分变得多余 - 并且可能不利于页面的大小/速度。
    猜你喜欢
    • 2019-10-04
    • 1970-01-01
    • 1970-01-01
    • 2019-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-11
    相关资源
    最近更新 更多