首先,我正在使用Django。 Django提供的gzip中间件工作得很好。 Nginx还提供了一个gzip模块。使用Nginx的gzip模块会更有意义,因为它纯粹是用C实现的,或者是否存在其他性能方面的考虑因素。
其次,Django不会在200字节以下gzip。这是因为当压缩输出小于此值时,gzipping太贵而无法获得任何值吗?
第三,我正在构建的API几乎是纯粹的动态,只有很少的缓存。 gzipping是否足够昂贵,以至于在这种情况下使用它是不切实际的(相比之下,我可以在网络服务器上缓存gzip压缩输出)?
答案 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)您可以设计一个包含样本数据的测试套件。然后决定哪些数据最适合您的应用程序。