Changeset 6626
- Timestamp:
- 10/28/07 17:32:25 (1 year ago)
- Files:
-
- django/trunk/django/utils/cache.py (modified) (9 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
django/trunk/django/utils/cache.py
r6435 r6626 14 14 cache keys to prevent delivery of wrong content. 15 15 16 A example: i18n middleware would need to distinguish caches by the16 An example: i18n middleware would need to distinguish caches by the 17 17 "Accept-language" header. 18 18 """ … … 22 22 import time 23 23 from email.Utils import formatdate 24 24 25 from django.conf import settings 25 26 from django.core.cache import cache … … 41 42 """ 42 43 def dictitem(s): 43 t = s.split('=', 1)44 t = s.split('=', 1) 44 45 if len(t) > 1: 45 46 return (t[0].lower(), t[1]) … … 65 66 kwargs['max_age'] = min(cc['max-age'], kwargs['max_age']) 66 67 67 for (k, v) in kwargs.items():68 for (k, v) in kwargs.items(): 68 69 cc[k.replace('_', '-')] = v 69 70 cc = ', '.join([dictvalue(el) for el in cc.items()]) … … 96 97 def add_never_cache_headers(response): 97 98 """ 98 Add headers to a response to indicate that 99 a page should never be cached. 99 Adds headers to a response to indicate that a page should never be cached. 100 100 """ 101 101 patch_response_headers(response, cache_timeout=-1) … … 120 120 121 121 def _generate_cache_key(request, headerlist, key_prefix): 122 " Returns a cache key from the headers given in the header list."122 """Returns a cache key from the headers given in the header list.""" 123 123 ctx = md5.new() 124 124 for header in headerlist: … … 126 126 if value is not None: 127 127 ctx.update(value) 128 return 'views.decorators.cache.cache_page.%s.%s.%s' % (key_prefix, iri_to_uri(request.path), ctx.hexdigest()) 128 return 'views.decorators.cache.cache_page.%s.%s.%s' % ( 129 key_prefix, iri_to_uri(request.path), ctx.hexdigest()) 129 130 130 131 def get_cache_key(request, key_prefix=None): … … 140 141 if key_prefix is None: 141 142 key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX 142 cache_key = 'views.decorators.cache.cache_header.%s.%s' % (key_prefix, iri_to_uri(request.path)) 143 cache_key = 'views.decorators.cache.cache_header.%s.%s' % ( 144 key_prefix, iri_to_uri(request.path)) 143 145 headerlist = cache.get(cache_key, None) 144 146 if headerlist is not None: … … 164 166 if cache_timeout is None: 165 167 cache_timeout = settings.CACHE_MIDDLEWARE_SECONDS 166 cache_key = 'views.decorators.cache.cache_header.%s.%s' % (key_prefix, iri_to_uri(request.path)) 168 cache_key = 'views.decorators.cache.cache_header.%s.%s' % ( 169 key_prefix, iri_to_uri(request.path)) 167 170 if response.has_header('Vary'): 168 headerlist = ['HTTP_'+header.upper().replace('-', '_') for header in vary_delim_re.split(response['Vary'])] 171 headerlist = ['HTTP_'+header.upper().replace('-', '_') 172 for header in vary_delim_re.split(response['Vary'])] 169 173 cache.set(cache_key, headerlist, cache_timeout) 170 174 return _generate_cache_key(request, headerlist, key_prefix)
