сжатие и распаковка текста из HTML на сервер и наоборот - PullRequest
0 голосов
/ 10 марта 2012

Мы собираемся написать функцию в моей системе, которая потребует очень массивного пользовательского поста http и ответа http, вероятно, миллионов запросов / отклика по несколько байт каждый (отправка и получение с помощью ajax и json)

но этого недостаточно, мне нужно найти способ сжимать данные с помощью java-скрипта и распаковывать на стороне сервера (.net или java сервлеты), а также сжимать на сервере и распаковывать с помощью javascript.

Этокажется глупым сохранять такие байты, но я хочу быть готовым к худшему.

Есть какие-нибудь указания?просто напишите, что вы думаете, давайте поделимся своими мыслями

спасибо

Ed

Ответы [ 5 ]

1 голос
/ 10 марта 2012

В Java вы можете использовать пакет java.util.zip, который должен предоставлять вам методы сжатия / распаковки.

Для JavaScript я нашел этот урок . Или вы можете реализовать свой собственный метод, заменив все символы Юникода в потоке байтов следующим образом:

Ваше сообщение:
AABCCC
Unicode Bytes:
0x41 0x00 0x41 0x00 0x42 0x00 0x43 0x00 0x43 0x00 0x43 0x00
сжатый, опуская 0x00:
0x41 0x41 0x42 0x43 0x43 0x43
еще больше, если опустить двойники:
2 0x41 1 0x42 3 0x43

Даже если сейчас это выглядит не очень впечатляюще, может быть один или два запроса, которые могли бы получить выгоду от этого сжатия. Хотя действительно важно, чтобы алгоритм был очень эффективным и достаточным. Поскольку вы говорите о «миллионах» запросов. Один большой запрос может принести пользу от этого сжатия, но многие небольшие запросы могут быть очень неэффективными.

Извините, я не могу предоставить вам полное решение, но, может быть, это немного приблизит вас.

1 голос
/ 10 марта 2012

Вы можете использовать HTTP-сжатие, поддерживаемое основными веб-серверами, серверами приложений и браузерами.В то время как вы делаете это, обратите внимание, что IE исторически был очень ошибочным в этой области, поэтому убедитесь, что он работает в нескольких версиях IE.Для apache вы можете использовать mod_deflate.Jetty & Tomcat имеют свои собственные версии фильтра GZIP.Сжатие / Распаковка в Javascript будет громоздким.Мне не известны какие-либо библиотеки, доступные в JS, которые могут вам помочь.

1 голос
/ 10 марта 2012

Вопросы производительности требуют, чтобы вы попытались измерить, чтобы получить какой-либо разумный ответ.

В вашем случае я бы внимательно посмотрел на необработанное сообщение и увидел, где находятся байты - я уверен, что для крошечных пакетов данных большинство байтовбудет в заголовках, поэтому сжатие контента не даст вам никакой выгоды.Это ваша система - посмотрите на ваши запросы и посмотрите, где можно получить уменьшенный размер пакетов.

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

1 голос
/ 10 марта 2012

Является ли реализация zlib-сжатия на уровне сервера недостаточной для вашего случая использования? Это был бы самый простой и надежный способ заставить работать сжатие. Все наиболее распространенные веб-серверы и браузеры поддерживают сжатие zlib из коробки.

0 голосов
/ 10 марта 2012

Вы можете установить фильтр сжатия и иметь его для вас:

http://code.google.com/p/webutilities/source/browse/trunk/src/com/googlecode/webutilities/filters/GZIPCompressionFilter.java?spec=svn39&r=39

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...