DjangoサーバーでGzip転送を有効にしてみる
やりたいこと
Djangoサーバーで配信するHTML等の要素をGzipで圧縮して利用帯域幅を削減したい。
やってみる
実はDjangoには標準でGzip圧縮できる機能があるので今回はそれを有効にしてみる。
MIDDLEWARE = [
'django.middleware.gzip.GZipMiddleware',#配信データをGzip圧縮する
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
setting.pyのMIDDLEWARE
にdjango.middleware.gzip.GZipMiddleware
を追加するだけ。
これでDjangoサーバーから配信される要素にGzip圧縮がかかります。
ただしここでいくつか注意点。
- staticフォルダに配置されている要素には圧縮がかからない
- 配信される要素のサイズが200byte以下の場合は圧縮がかからない
- MIDDLEWAREの一番先頭の要素にdjango.middleware.gzip.GZipMiddlewareを追加する
前の二つはは圧縮にかかるコストより、配信の際のメリットが小さくなるため(通常画像は圧縮済みなのでさらなる圧縮が見込めない)
後者は通常、配信される要素は一番最後に圧縮されるべきだからです。
これで多少は通信速度が上がるかなぁ