Стоит ли сжатие GZip с AMF - PullRequest
       4

Стоит ли сжатие GZip с AMF

5 голосов
/ 04 октября 2010

У нас есть приложение Flex / Java, использующее BlazeDS, и мы расследуем вопрос уменьшения размера полезных нагрузок, передаваемых между нашим сервером и клиентом.

Поскольку AMF является двоичным форматом и должен быть достаточно компактным, есть ли какое-либо преимущество от включения сжатия GZip? Кто-нибудь еще делал это раньше, и видели ли вы какие-либо существенные выгоды от использования сжатия?

UPDATE

Я только что выполнил простой тест, чтобы определить, какие коэффициенты сжатия можно ожидать, если мы включим gzipping. Я просто захватил полезную нагрузку AMF в некоторых файлах и просто распаковал их, используя версию командной строки Linux. Я не указал уровень сжатия, просто по умолчанию, то есть «нормальный». Похоже, что в среднем размер полезной нагрузки уменьшается на 9%, а некоторые полезные нагрузки достигают 61%. Кто-нибудь может увидеть недостаток в этом методе, и какой уровень сжатия можно использовать в HTTP-архивировании?

Ответы [ 3 ]

5 голосов
/ 04 октября 2010

Недавно мы переключили некоторую связь клиент-сервер с SOAP на AMF, а также сравнили влияние сжатия. Мы сосредоточились на одном конкретном сервисе, который возвращает несколько больших откликов. Это были наши результаты, возвращающие те же данные (сериализованные с xfire + aegis для SOAP и BlazeDS для AMF):

  • SOAP: без сжатия: 1000 КБ, разархивированный: 100 КБ (сокращение на 90%)
  • AMF: без сжатия: 200 КБ, разархивированный: 30 КБ (сокращение на 85%)

Наш вывод, что gzipping определенно стоит того. Бинарный AMF может быть сжат почти так же хорошо, как XML (SOAP). Конечно, ваш пробег может варьироваться в зависимости от типа данных, которые вы возвращаете.

4 голосов
/ 04 октября 2010

Это зависит от данных.Если у вас много высокоструктурированных данных, то, как правило, они используют только часть бит фактической информации.Тогда сжатие будет иметь смысл.

например, запись с полем категории, которая является одной из 6 возможностей, может занять 32-битную, если она закодирована как GUID, но вы можете представить ее с 3 битамиСжатие будет рассматривать эти паттерны как очень частые и уменьшать их.

Аналогично для неповторяющихся строк.

AMF имеет некоторые оптимизации для небольших целых чисел и повторяющихся строк, но на самом деле это не сжатие.См. это обсуждение .

Сделайте несколько тестов и примите решение.

2 голосов
/ 04 октября 2010

Вы можете поэкспериментировать с тем, как включение и выключение GZIP изменяет размеры передачи, используя мой CIA RX Benchmark . Но, как отмечают другие, результаты сильно зависят от данных. Поэтому лучше всего делать собственные тесты с собственными данными.

Также имейте в виду, что с GZIP с обеих сторон накладные расходы, так что иногда эти издержки того стоят (медленные соединения), а иногда - нет.

...