Подходит ли сжатие Snappy для Mochiweb, HTTP-сжатие?

Я использую Snappy ( https://github.com/fdmanana/snappy-erlang-nif) в качестве замены zlib для сжатия HTTP в приложении Mochiweb.

В то время как Snappy в целом работает для меня, а zlib прекрасно работает для сжатия ответов перед их отправкой, использование Snappy в качестве замены zlib приводит к тому, что клиентские браузеры искажают ответ.

  1. Кодирует ли Snappy кодировку utf-8?
  2. Знают ли клиентские браузеры, как распаковывать сжатые документы Snappy?
  3. Я делаю что-то явно supid?

Это работает:

success(Req, Code, Body) ->
    case iolist_size(Body) of
    N when N > 1024000 ->
        Data = zlib:gzip(Body),
        Req:respond({Code, [{"Vary","Accept-Encoding"},
                      {"Content-Encoding","gzip"},
                      {"Content-Type", "application/json"}], 
                     Data});
     _ ->
        Req:respond({Code, [{"Content-Type", "application/json"}], Body})
end.

Это не

success(Req, Code, Body) ->
    case iolist_size(Body) of
    N when N > 1024000 ->
        {ok, Data} = snappy:compress(Body),
        Req:respond({Code, [{"Vary","Accept-Encoding"},
                      {"Content-Encoding","snappy"},
                      {"Content-Type", "application/json"}], 
                     Data});
    _ ->
        Req:respond({Code, [{"Content-Type", "application/json"}], Body})
end.

1 ответ

Решение

Нет ни одного браузера, который поддерживает сжатие snappy;) Вы не можете выбрать любой алгоритм сжатия, который вам нравится, вы должны выбрать алгоритмы, которые поддерживают браузеры. И большинство браузеров поддерживают только deflate и gzip.

Другие вопросы по тегам