Ticket #5691: i18n_cache_keys_r7960_t5691.diff

File i18n_cache_keys_r7960_t5691.diff, 2.7 KB (added by andrewbadr, 7 years ago)
  • django/utils/cache.py

     
    2929from django.core.cache import cache
    3030from django.utils.encoding import smart_str, iri_to_uri
    3131from django.utils.http import http_date
     32from django.utils import translation
    3233
    3334cc_delim_re = re.compile(r'\s*,\s*')
    3435
     
    143144        value = request.META.get(header, None)
    144145        if value is not None:
    145146            ctx.update(value)
    146     return 'views.decorators.cache.cache_page.%s.%s.%s' % (
    147                key_prefix, iri_to_uri(request.path), ctx.hexdigest())
    148 
     147    if settings.USE_I18N:
     148        lang = translation.get_language()
     149        return 'views.decorators.cache.cache_page.%s.%s.%s.%s' % (
     150                   key_prefix, iri_to_uri(request.path), ctx.hexdigest(), lang)
     151    else:
     152        return 'views.decorators.cache.cache_page.%s.%s.%s' % (
     153                   key_prefix, iri_to_uri(request.path), ctx.hexdigest())
     154   
    149155def get_cache_key(request, key_prefix=None):
    150156    """
    151157    Returns a cache key based on the request path. It can be used in the
     
    158164    """
    159165    if key_prefix is None:
    160166        key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX
    161     cache_key = 'views.decorators.cache.cache_header.%s.%s' % (
    162                     key_prefix, iri_to_uri(request.path))
     167    if settings.USE_I18N:
     168        lang = translation.get_language()
     169        cache_key = 'views.decorators.cache.cache_header.%s.%s.%s' % (
     170                        key_prefix, iri_to_uri(request.path), lang)
     171    else:
     172        cache_key = 'views.decorators.cache.cache_header.%s.%s' % (
     173                        key_prefix, iri_to_uri(request.path))
    163174    headerlist = cache.get(cache_key, None)
    164175    if headerlist is not None:
    165176        return _generate_cache_key(request, headerlist, key_prefix)
     
    183194        key_prefix = settings.CACHE_MIDDLEWARE_KEY_PREFIX
    184195    if cache_timeout is None:
    185196        cache_timeout = settings.CACHE_MIDDLEWARE_SECONDS
    186     cache_key = 'views.decorators.cache.cache_header.%s.%s' % (
    187                     key_prefix, iri_to_uri(request.path))
     197    if settings.USE_I18N:
     198        lang = translation.get_language()
     199        cache_key = 'views.decorators.cache.cache_header.%s.%s.%s' % (
     200                        key_prefix, iri_to_uri(request.path), lang)
     201    else:
     202        cache_key = 'views.decorators.cache.cache_header.%s.%s' % (
     203                        key_prefix, iri_to_uri(request.path))
    188204    if response.has_header('Vary'):
    189205        headerlist = ['HTTP_'+header.upper().replace('-', '_')
    190206                      for header in cc_delim_re.split(response['Vary'])]
Back to Top