Минимизируйте пакеты ответа / запроса - PullRequest
1 голос
/ 02 марта 2010

Я хочу сжать данные, которые отправляются туда и обратно через AJAX, чтобы он отправлял / получал меньше данных.

Я буду извлекать / сжимать на стороне сервера (C #) и стороне клиента (Javascript) до / после каждого ответа / запроса.

Какой самый простой способ сделать это?

Все коммуникации осуществляются через строки JSON (как запрос, так и ответ).

Ответы [ 4 ]

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

Самый простой способ сделать это - включить сжатие http на вашем сервере и позволить IIS и браузеру выяснить это.

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

Самое простое здесь - просто включить сжатие http вашего существующего JSON.

Вы могли бы быть более агрессивными с этим - например, я не играл с этим, но несколько недель назад кто-то упомянул реализацию буферов протокола javascript . Пусть ваш сервер вернет несколько необработанных байтов (или, может быть, base-64 или hex), и вы увидите значительную экономию. Однако это потребовало бы немного изменить ваш код.

Предостережение: хотя я довольно хорошо знаком с protobufs , обычно , я не использовал эту реализацию javascript. YMMV.

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

1

Вы можете установить «Content-encoding» в «gzip» на стороне сервера для кодирования потока HTTP:

Response.AppendHeader("Content-encoding", "gzip");

2

Вы можете вручную заархивировать JSON на стороне клиента и сервера:

Для клиентской части вы можете использовать такую ​​библиотеку, как: http://jszip.stuartk.co.uk/

Для размера сервера вы можете использовать .Net framework для сжатия / распаковки

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

Я бы не советовал вам отправлять слишком много данных через JSON, но если это действительно необходимо, я бы посоветовал вам GZIP свои данные.

Здесь есть хорошая статья об этом: http://www.west -wind.com / Weblog / posts / 10564.aspx

С данными GZIPED вы можете сэкономить до 90%

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