Как сжимать JSON-запросы в Django? - PullRequest
1 голос
/ 22 февраля 2011

Я отправляю всю информацию JSON в jQuery (около 40 КБ), которая может быть намного меньше, если дескрипторы не повторяются для каждого отдельного объекта.(например, 'name':, 'title': 'image': ...)

Обычно я отправляю данные JSON следующим образом:

reply = json.dumps({'items':itemsArray})         
return HttpResponse(reply, 'mimetype/javascript')

Есть ли способ, которым я могулибо скопируйте это для клиента (если доступно), либо используйте стороннюю утилиту для перевода сокращенных версий имен атрибутов объектов между сервером и клиентом, используя функцию jQuery map()?

Ответы [ 3 ]

3 голосов
/ 22 февраля 2011

Этот ответ устарел и не должен соблюдаться. Было показано, что использование промежуточного программного обеспечения GZip нарушает шифрование. Я оставлю старый ответ, но НЕ следуйте этому совету.


Вы хотите промежуточное программное обеспечение GZip: django.middleware.gzip.GZipMiddleware . Конечно, также вполне возможно, что сжатие будет обрабатываться вашим веб-сервером. Примером этого является: mod_deflate

1 голос
/ 22 февраля 2011

GZipping обрабатывается веб-сервером и браузером.Поэтому вам следует проверить конфигурацию вашего веб-сервера и веб-сервера, чтобы он получил ответ.

Для минимизации: JSON уже является довольно минимальным протоколом.По-прежнему сокращать его и его индексы вы, вероятно, не найдете чего-либо, так как вам также придется сопоставить его с обеих сторон, сервер в PHP и клиент в JavaScript.Адаптация существующих минифайеров также требует внимания, поскольку они должны быть согласованными и отображать, а не только минимизировать, поскольку вам придется снова декодировать их на другой стороне.

0 голосов
/ 24 января 2017

Я получил следующее, чтобы работать для меня:

Просто позволить nginx сделать сжатие работало намного плавнее.

Я внес следующие изменения в файл /etc/nginx/nginx.conf, чтобы «включить» сжатие gzip, и все.Большинство современных браузеров автоматически извлекают (распаковывают) gzip-данные, поэтому на стороне клиента ничего не нужно делать.

nginx.conf file:

    http {

        #... other settings ...#

        ##
        # Gzip Settings
        ##

        gzip on;
        gzip_disable "msie6";

        gzip_vary on;
        gzip_proxied any;
        gzip_comp_level 6;
        gzip_buffers 16 8k;
        gzip_http_version 1.1;
        gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript;
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...