gzip - 关于性能的问题

oro*_*aki 9 compression django gzip nginx

首先,我正在使用Django.Django提供的gzip中间件工作得很好.Nginx还提供了一个gzip模块.使用Nginx的gzip模块会更有意义,因为它纯粹是用C实现的,或者我还缺少其他性能考虑因素.

其次,Django不会在200字节以下进行gzip.这是因为当压缩输出小于此时,gzipping太昂贵而没有任何值?

第三,我正在构建的API几乎是纯粹的动态,几乎没有缓存.gzipping是否足够昂贵,以至于在这种情况下使用它是不实际的(相比之下,我可以在网络服务器上缓存gzip压缩输出)?

mik*_*iku 8

1)我想一个gzip压缩就足够了,nginx更快,虽然我还没有对它进行基准测试.GzipMiddleware利用一些内置函数,这些内置函数也可能得到很好的优化.

# From http://www.xhaus.com/alan/python/httpcomp.html#gzip
# Used with permission.
def compress_string(s):
    import cStringIO, gzip
    zbuf = cStringIO.StringIO()
    zfile = gzip.GzipFile(mode='wb', compresslevel=6, fileobj=zbuf)
    zfile.write(s)
    zfile.close()
    return zbuf.getvalue()
Run Code Online (Sandbox Code Playgroud)

2)小的gzip文件无法从压缩中获益(事实上,小文件在处理时可能会更大),因此只需跳过此步骤即可节省时间.

3)您可以设计包含样本数据的测试套件.然后决定哪些数据最适合您的应用程序.