2010-12-21 8 views
9

まず、私はDjangoを使用しています。 Djangoはgzipミドルウェアを提供しています。 Nginxはgzipモジュールも提供しています。 Nginxのgzipモジュールは純粋にC言語で実装されているため、あるいは他のパフォーマンス上の考慮事項がないために使用する方が理にかなっていますか?gzip - パフォーマンスについての質問

第2に、Djangoは200バイト未満のものをgzipしません。 gzippingはそれほど高価ではないので、それより小さい出力を圧縮すると何か価値があるからですか?

第3に、私が構築しているAPIはほとんど純粋に動的であり、キャッシングはほとんどありません。この状況で使用するのは実用的ではありません(ウェブサーバー上でgzipped出力をキャッシュできる状況と比較して)。

答えて

8

1)まだ私はベンチマークしていないが、1つのgzip圧縮で十分であり、nginxが高速であると想像している。 GzipMiddlewareは、あまりにも最適化された組み込み関数をいくつか使用しています。 1だけで、このステップをスキップして、時間を節約することができるように

# 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)サンプルデータを含むテストスイートを設計できます。次に、そのデータを決定します。これはアプリケーションに最適です。