/ / Як стискати JSON-запити в Django? - jquery, django, json, compression

Як стискати JSON-запити в Django? - jquery, django, json, compression

Я надсилаю цілий ряд інформації JSON у jQuery (близько 40KB), що може бути набагато меншим, якщо дескриптори не повторюються для кожного окремого об'єкта (наприклад, "name":, "title": "image" :. ..)

Зазвичай я надсилаю такі дані JSON:

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

Чи є спосіб, яким я можу або gzip цедля клієнта (якщо є) або використовувати програму для сторонніх розробників для перекладу між скороченими версіями назв атрибутів об'єктів між сервером та стороною клієнта, використовуючи jQuery map() функція

Відповіді:

1 для відповіді № 1

GZipping обробляється веб-сервером і браузером. Отже, ви повинні перевірити конфігурацію вашого веб-сервера та веб-сервера, щоб вона відтворювала відповідь.

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


3 для відповіді № 2

Ця відповідь застаріла, і її не слід дотримуватися. Використання проміжного програмного забезпечення GZip було спричинено компромісом шифрування. Я залишу стару відповідь, але НЕ дотримуйтесь цієї пропозиції.


Ви хочете проміжне програмне забезпечення GZip: django.middleware.gzip.GZipMiddleware. Звичайно, це також цілком можливо, щоб дозволити компресію обробляти вашим веб-сервером. Прикладом цього є: mod_deflate


0 для відповіді № 3

Для мене працювало наступне:

Просто дозволяючи nginx робити стиснення працювало набагато плавніше.

Я зробив наступні зміни до/etc/nginx/nginx.conf, щоб "увімкнути" стиснення gzip, і це було так. Більшість сучасних браузерів автоматично витягують (розпаковують) gzip-дані, отже, немає нічого спільного з клієнтом.

Файл nginx.conf:

    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;
}