From 9b397ee50d3ba3c29c754ad54b9181b4f300ea6f Mon Sep 17 00:00:00 2001 From: Malcolm Tredinnick Date: Sun, 17 Jun 2007 07:21:09 +0000 Subject: [PATCH] Changed ETag computation to first check if an ETag header already exists in the response. git-svn-id: http://code.djangoproject.com/svn/django/trunk@5483 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/middleware/common.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/django/middleware/common.py b/django/middleware/common.py index 5f671dff7da..9610e1e952c 100644 --- a/django/middleware/common.py +++ b/django/middleware/common.py @@ -11,7 +11,8 @@ class CommonMiddleware(object): - Forbids access to User-Agents in settings.DISALLOWED_USER_AGENTS - URL rewriting: Based on the APPEND_SLASH and PREPEND_WWW settings, - this middleware appends missing slashes and/or prepends missing "www."s. + this middleware appends missing slashes and/or prepends missing + "www."s. - ETags: If the USE_ETAGS setting is set, ETags will be calculated from the entire page content and Not Modified responses will be returned @@ -74,7 +75,10 @@ class CommonMiddleware(object): # Use ETags, if requested. if settings.USE_ETAGS: - etag = md5.new(response.content).hexdigest() + if response.has_header('ETag'): + etag = response['ETag'] + else: + etag = md5.new(response.content).hexdigest() if response.status_code >= 200 and response.status_code < 300 and request.META.get('HTTP_IF_NONE_MATCH') == etag: response = http.HttpResponseNotModified() else: