Я закончил использовать RawDeflate library для достижения сжатия от тридцати до пятидесяти процентов. Это лучше, чем все методы, перечисленные в the SO question, связанные с комментариями.
Я написал следующий класс Ruby для раздувания данных на сервере.
require "zlib"
require "base64"
class Decompression
# Decompress content sent to the server.
#
# Usage:
#
# Decompression.decompress(params["raw_content"])
#
# Returns string.
def self.decompress(string)
decoded = Base64.decode64(string)
inflate(decoded).force_encoding('UTF-8')
end
private
# https://stackoverflow.com/q/1361892/574190
def self.inflate(string)
zstream = Zlib::Inflate.new(-Zlib::MAX_WBITS)
buf = zstream.inflate(string)
zstream.finish
zstream.close
buf
end
end
@olliej имеет очень хороший ответ на эту тему здесь: http://stackoverflow.com/questions/3640357/how-to-compress-a-string –
У меня нет ответа, но JS имеет очень разные характеристики производительности, например, C++ или C#. Вероятно, вам нужно сделать тест litte, чтобы выбрать лучший алгоритм. – usr