Выбор подходящей схемы сжатия для передачи данных через JSON - PullRequest
1 голос
/ 13 ноября 2011

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

Оригинальный вопрос (Настройка свойств LZMA для jslzma)

У меня естьЯ получил несколько больших файлов JSON, которые мне нужно перенести с помощью AJAX.В настоящее время я использую jQuery и $ .getJSON ().Я бы хотел использовать библиотеку jslzma для распаковки файлов после их получения.В настоящее время я использую django с библиотекой pylzma для сжатия файлов.

Единственная проблема - отсутствие документации для библиотеки jslzma.Есть, но не достаточно.Итак, у меня есть два вопроса о том, как использовать библиотеку.

В качестве примера она дает:

LZMA.decompress(properties, inStream, outStream, outSize);

Я знаю, как установить переменные inStream и outStream, но не properties или outSize.Так может кто-нибудь привести пример (ы) о том, как установить переменную properties (то есть, что ожидается) и как вычислить outSize ...

Спасибо.

Редактировать № 1 (пересмотренный вопрос) Я ищу схему сжатия, которая поддается воспроизведению данных с высокой степенью повторяемости, используя python (django) и javascript.

Передаваемые данные содержат измерения высоты.Каждый файл имеет 1200x1200 точек данных, что составляет около 2,75 МБ в несжатом виде в двоичном виде.JSON раздувает это между 5-6 МБ.Я также изучил base64 (только для того, чтобы охватить все базы), который уменьшил бы размер, но я не имел успеха, читая его в js.Я думаю, что данные легко поддаются сжатию только из-за высокой повторяемости значений данных.Например, один файл имеет только 83 уникальных значений высот для описания 1440000 точек данных.

Мне просто не повезло, в основном потому, что я только начинаю изучать JavaScript.

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

Спасибо.

Ответы [ 2 ]

2 голосов
/ 15 ноября 2011

Для чего стоит LZMA, как правило, очень медленно сжимается, а также распаковывается; и, таким образом, более распространенным является использование немного более быстрых схем сжатия. Стандартный GZIP (выкачка) имеет достаточно хороший баланс: его степень сжатия приемлема, а скорость сжатия на много лучше, чем у LZMA или bzip2 Также: большинство веб-серверов и клиентов поддерживают автоматическую обработку сжатия gzip, что делает его еще более удобным в использовании.

2 голосов
/ 13 ноября 2011

Распаковка на стороне клиента с Javacscript может занять значительно больше времени и сильно зависит от доступной пропускной способности клиентского ящика.Почему бы просто не реализовать меньшую, но более быструю и простую программу для распаковки, например, кода rle, delta или golomb?Или, может быть, вы хотите посмотреть на сжатые Jsons?

...