如何在Django中压缩JSON请求?

时间:2011-02-22 09:55:42

标签: jquery django json compression

我将大量的JSON信息发送到jQuery(大约40KB),如果没有为每个对象重复描述符,这可能会小得多。 (例如'name':,'title':'image':...)

通常我会发送这样的JSON数据:

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

有没有一种方法可以让我为客户端gzip这个(如果可用),或使用第三方实用程序在服务器和客户端之间的对象属性名称的缩短版本之间进行转换,使用jQuery {{1}功能?

3 个答案:

答案 0 :(得分:3)

这个答案已经过时,不应该遵循。使用GZip中间件已被证明会破坏加密。我会留下旧答案,但不要遵循这个建议。


你想要GZip中间件: django.middleware.gzip.GZipMiddleware。当然,完全有可能让你的web服务器处理压缩。例如:mod_deflate

答案 1 :(得分:1)

GZipping由网络服务器和浏览器处理。因此,您应该检查您的网络服务器和网络服务器配置,它会对响应进行gzips。

对于缩小:JSON已经是一个非常小的协议。为了仍然缩短它和它的索引你可能找不到东西,因为你还必须在两侧映射它,PHP中的服务器和JavaScript中的客户端。调整现有的缩小器也需要注意,因为它必须是一致的并且映射,不仅缩小,因为你必须再次在另一侧解码它。

答案 2 :(得分:0)

我得到以下内容为我工作:

简单地让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;
    }