From c050b6a25acff020fd60f2f528eb019615e00203 Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Sun, 12 Aug 2007 12:29:25 +0000 Subject: [PATCH] Fixed #4946 -- Added some small improvements to Gzip middleware. Thanks, colin@owlfish.com. git-svn-id: http://code.djangoproject.com/svn/django/trunk@5875 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/middleware/gzip.py | 5 +++++ docs/middleware.txt | 6 ++++++ 2 files changed, 11 insertions(+) diff --git a/django/middleware/gzip.py b/django/middleware/gzip.py index a7c74481d0..9b2a5f3d22 100644 --- a/django/middleware/gzip.py +++ b/django/middleware/gzip.py @@ -11,6 +11,11 @@ class GZipMiddleware(object): on the Accept-Encoding header. """ def process_response(self, request, response): + if response.status_code != 200 or len(response.content) < 200: + # Not worth compressing really short responses or 304 status + # responses, etc. + return response + patch_vary_headers(response, ('Accept-Encoding',)) # Avoid gzipping if we've already got a content-encoding or if the diff --git a/docs/middleware.txt b/docs/middleware.txt index 533f1ccede..63ba8c6999 100644 --- a/docs/middleware.txt +++ b/docs/middleware.txt @@ -91,6 +91,12 @@ django.middleware.gzip.GZipMiddleware Compresses content for browsers that understand gzip compression (all modern browsers). +It is suggested to place this first in the middleware list, so that the +compression of the response content is the last thing that happens. Will not +compress content bodies less than 200 bytes long, when the response code is +something other than 200, Javascript files (for IE compatibitility), or +responses that have the ``Content-Encoding`` header already specified. + django.middleware.http.ConditionalGetMiddleware -----------------------------------------------