当前位置: 首页 > 知识库问答 >
问题:

在ruby中压缩大字符串

杨起运
2023-03-14

我有一个web应用程序(ruby on rails),它发送一些YAML作为隐藏输入字段的值。

现在我想减小发送到浏览器的文本的大小。什么是传输最少数据的最有效的无损压缩形式?我可以在服务器端承担额外的压缩和解压缩成本。

共有1个答案

司徒浩思
2023-03-14

您可以使用ruby内核中的zlib实现来输入/解压缩数据:

require "zlib"
data = "some long yaml string" * 100
compressed_data = Zlib::Deflate.deflate(data)
#=> "x\x9C+\xCE\xCFMU\xC8\xC9\xCFKW\xA8L\xCC\xCDQ(.)\xCA\xCCK/\x1E\x15\x1C\x15\x1C\x15\x1C\x15\x1C\x15\x1C\x15\x1C\x15\x1C\x15D\x15\x04\x00\xB3G%\xA6"

您应该对压缩数据进行base64编码,使其可打印:

require 'base64'
encoded_data = Base64.encode64 compressed_data
#=> "eJwrzs9NVcjJz0tXqEzMzVEoLinKzEsvHhUcFRwVHBUcFRwVHBUcFUQVBACz\nRyWm\n"

稍后,在客户端,您可以使用pako(javascript的zlib端口)返回数据。这个答案可能有助于您实现JS部分。

data.size            # 2100
compressed_data.size #   48
encoded_data.size    #   66
Zlib::Inflate.inflate(Base64.decode64(encoded_data))
#=> "some long yaml stringsome long yaml str ... (shortened, as the string is long :)
    null
 类似资料:
  • 问题内容: 我怀疑这是否是加密,但是找不到更好的短语。 我需要像这样传递一个长查询字符串: 查询字符串不包含任何敏感信息,因此在这种情况下我并不真正担心安全性。只是…好,太长且太丑陋。是否有一个库函数可以让我将查询字符串编码/加密/压缩为类似于md5()的结果(类似于,总是32个字符串),但是可以解码/解密/解压缩? 问题答案: 基本前提是非常困难的。在URL中传输任何值意味着您只能使用ASCII

  • 问题内容: 我使用GZIPOutputStream或ZIPOutputStream压缩了一个字符串(我string.length()小于20),但是压缩后的结果比原始字符串长。 在某个站点上,我发现一些朋友说这是因为我的原始字符串太短,GZIPOutputStream可用于压缩较长的字符串。 因此,有人可以帮我压缩字符串吗? 我的功能是这样的: 更新: 问题答案: 压缩算法几乎总是具有某种形式的空

  • 问题内容: 我在想办法也无法在Java中解压缩String时遇到麻烦。这是我要学习的基本Java类,因此只需要基本命令,没有什么花哨的地方。它能够输入的目标 在命令提示符下,它将打印(就像它压缩参数字符串一样)。 另一个目标是输入 它将打印(就像它将解压缩参数String一样)。减压是我遇到的问题。这是我的代码,非常感谢我得到的任何帮助。 问题答案: Quick Code for you..

  • 问题内容: 我正在使用以下代码来压缩和解压缩字符串数据,但是我面临的问题是,它很容易被压缩而不会出错,但是decompress方法会引发以下错误。 线程“主”中的异常java.io.IOException:不是GZIP格式 仍然不知道如何解决此问题!!! 问题答案: 这是因为 发送您可以从中获得的,并在其中使用它来构建您的。以下是需要在代码中进行的更改。

  • 我有一个巴布亚新几内亚图像,并得到了它的Base64巴布亚新几内亚字符串表示。它仍然很大,我想知道它是否能被进一步压缩。这可能吗? 出身背景 我使用html2CAN as创建当前网页的屏幕截图,将其转换为bas64(使用canvas.toDataURL())字符串并将其发送到服务器。但是,如果该字符串大小太大,服务器将返回异常。 以字符串的形式压缩画布最有效的方法是什么? 非常感谢您的帮助。提前谢

  • 本文向大家介绍php压缩和解压缩字符串的方法,包括了php压缩和解压缩字符串的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php压缩和解压缩字符串的方法。分享给大家供大家参考。具体如下: 下面php代码通过gzcompress和gzuncompress压缩和解压缩字符串,可以设定压缩级别 希望本文所述对大家的php程序设计有所帮助。