summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--django/middleware/gzip.py5
-rw-r--r--docs/middleware.txt6
2 files changed, 11 insertions, 0 deletions
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
-----------------------------------------------