2011-02-22 3 views
1

J'envoie beaucoup d'informations JSON à jQuery (environ 40 Ko), ce qui pourrait être beaucoup plus petit si les descripteurs n'étaient pas répétés pour chaque objet. (Par exemple 'nom':, 'title': 'image': ...)Comment compresser les requêtes JSON dans Django?

Habituellement j'envoyer des données JSON comme ceci:

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

Y at-il une façon dont je peux gzip cela pour le client (si disponible) ou utiliser un utilitaire tiers pour traduire entre les versions raccourcies des noms d'attribut d'objet entre le serveur et le côté client, à l'aide de la fonction jQuery map()?

+0

http://stackoverflow.com/questions/395505/compression-algorithm-for-json-encoded-packets – Azd325

Répondre

1

GZipping est géré par le serveur Web et le navigateur. Vous devez donc vérifier la configuration de votre serveur Web et de vos serveurs Web, afin que la réponse soit gzippée.

Pour la minimisation: JSON est déjà un protocole assez minimal. Pour toujours le raccourcir et ses index vous ne trouverez probablement pas quelque chose, car vous devrez également le mapper des deux côtés, serveur en PHP et client en JavaScript. L'adaptation de minificiers existants nécessite également de l'attention, car elle doit être cohérente et cartographier, et pas seulement minifier, car vous devrez de nouveau la décoder de l'autre côté.

3

Cette réponse est obsolète et ne doit pas être suivie. L'utilisation d'un middleware GZip a été montré pour compromettre le cryptage. Je vais laisser la vieille réponse, mais NE PAS suivre cette suggestion.


Vous voulez que le middleware gzip: django.middleware.gzip.GZipMiddleware. Bien sûr, il est également tout à fait possible de laisser la compression être géré par votre serveur web. Un exemple de ceci est: mod_deflate

+0

Ce lien est maintenant cassé –

0

J'ai obtenu ce qui suit à travailler pour moi:

simplement laisser faire nginx la compression a travaillé beaucoup plus lisse.

J'ai apporté les modifications suivantes au fichier /etc/nginx/nginx.conf pour «activer» la compression gzip et c'est tout. La plupart des navigateurs modernes extraient (décompressent) automatiquement les données gzipées, de sorte qu'il n'y a rien à faire du côté client.

fichier 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; 
    } 
Questions connexes