用红宝石压缩大字符串
发布时间:2020-12-16 20:15:46 所属栏目:百科 来源:网络整理
导读:我有一个web应用程序( ruby on rails),它发送一些YAML作为一个隐藏的输入域的值. 现在我想减少发送到浏览器的文本的大小.无损压缩的最有效形式是什么是最少的数据发送?我可以在服务器端承担额外的压缩和解压缩成本. 解决方法 您可以使用ruby内核中的zlib实
我有一个web应用程序(
ruby on rails),它发送一些YAML作为一个隐藏的输入域的值.
现在我想减少发送到浏览器的文本的大小.无损压缩的最有效形式是什么是最少的数据发送?我可以在服务器端承担额外的压缩和解压缩成本. 解决方法
您可以使用ruby内核中的zlib实现来进行数据删除:
require "zlib" data = "some long yaml string" * 100 compressed_data = Zlib::Deflate.deflate(data) #=> "xx9C+xCExCFMUxC8xC9xCFKWxA8LxCCxCDQ(.)xCAxCCK/x1Ex15x1Cx15x1Cx15x1Cx15x1Cx15x1Cx15x1Cx15x1Cx15Dx15x04x00xB3G%xA6" 您应该对压缩数据进行base64编码,使其可打印: require 'base64' encoded_data = Base64.encode64 compressed_data #=> "eJwrzs9NVcjJz0tXqEzMzVEoLinKzEsvHhUcFRwVHBUcFRwVHBUcFUQVBACznRyWmn" 后来,在客户端,您可以使用pako(zlib端口到javascript)来获取您的数据. This answer可能有助于您实现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 :) 免责声明: > ruby?? zlib的实现应该与pako实现兼容.但我没有尝试过.>关于字符串大小的数字有点被骗. Zlib在这里真的很有效,因为字符串重复了很多.现实生活中的数据通常不会重复. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |