gzip - 关于性能的问题

时间:2010-12-21 04:09:17

标签: django compression nginx gzip

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

其次,Django不会在200字节以下gzip。这是因为当压缩输出小于此值时,gzipping太贵而无法获得任何值吗?

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

1 个答案:

答案 0 :(得分: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()

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

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