двоичное кодирование для JSON? - PullRequest
3 голосов
/ 02 марта 2011

Мое приложение Javascript загружает довольно много данных с сервера, и я подумал, что в дополнение к обычному gzip, выполняемому сервером, я могу кодировать данные в некотором двоичном формате, а не в текстовом JSON. Есть ли стандартный способ сделать это?
В идеале это должен быть небольшой инструмент, который может взять текстовый файл JSON и преобразовать его в общий двоичный формат и небольшую библиотеку Javascript, которая его декодирует.

Кроме того, есть ли что-то особенное, что нужно сделать в XHR для передачи двоичных данных?

Ответы [ 3 ]

3 голосов
/ 02 марта 2011

Check BSON

BSON, сокращение от Binary JSON, представляет собой двоичную кодировку сериализации JSON-подобных документов.Как и JSON, BSON поддерживает встраивание документов и массивов в другие документы и массивы.BSON также содержит расширения, которые позволяют представлять типы данных, которые не являются частью спецификации JSON.Например, BSON имеет тип Date и тип BinData.

Найдите хорошее объяснение здесь http://kaijaeger.com/articles/introducing-bison-binary-interchange-standard.html

2 голосов
/ 02 марта 2011

Если gzip сжимается недостаточно хорошо, скорее всего, ваш двоичный формат тоже не сработает, особенно если вы не сможете декодировать его с помощью javascript в течение разумного промежутка времени.

Помнитечто разархивирование при использовании gzip выполняется непосредственно браузером и на несколько порядков быстрее, чем все, что вы можете сделать в javascript.

Если вы чувствуете, что десериализация JSON слишком медленная, потому что вы поддерживаете старые браузеры, такие какie7, который не декодирует JSON изначально, но зависит от eval для работы, рассмотрите возможность перехода от JSON к пользовательской кодировке, основанной на разбиении строк, которая намного быстрее десериализуется.

Для вдохновения попробуйтеПрочитайте эту статью:

http://code.flickr.com/blog/2009/03/18/building-fast-client-side-searches/

1 голос
/ 02 марта 2011

MongoDB использует нечто подобное для хранения документов.Вы можете получить более подробную информацию непосредственно на веб-сайте BSON .
К сожалению, BSON не работает с Javascript (как вы можете видеть из списка ),поэтому я думаю, что это не очень хороший ответ на ваш вопрос.

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

Обратите внимание, что есть вопрос о том, что BSON более компактен, чем JSON;то же самое может быть верно и для других протоколов, таких как protbuf - я настоятельно рекомендую вам сделать математику и проверить, есть ли реальные выгоды.

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