adding host to cache_key to enable subdomain caching
|Reported by:||lpiatek@…||Owned by:||nobody|
|Component:||Core (Cache system)||Version:||1.3|
|Cc:||Triage Stage:||Design decision needed|
|Has patch:||yes||Needs documentation:||yes|
|Needs tests:||yes||Patch needs improvement:||no|
If we try to run django on wildcard domain (all subdomains pointing one django app instance) there is problem when we turn on caching system. Django do not add any modificator to cache_key_suffix for subdomains. We get the same content on main page for different domain.
There is function in django.utils.cache._i18n_cache_key_suffix which django use to create prefix. To get it working I simply added one line which adds request.get_host() to this prefix. Details here:
I don't know is it the best solution You can choose. I'm waiting for others to comment.
*** django/utils/cache.py 2011-05-06 21:40:42.000000000 +0200 --- ../django/utils/cache.py 2011-05-06 21:18:33.000000000 +0200 *************** *** 151,156 **** --- 151,157 ---- # LANGUAGE_CODE to request, then fall back to the active language # which in turn can also fall back to settings.LANGUAGE_CODE cache_key += '.%s' % getattr(request, 'LANGUAGE_CODE', get_language()) + cache_key += '.%s' % (request.get_host()) return cache_key def _generate_cache_key(request, method, headerlist, key_prefix):
PS: I'm now considering whether request.get_host() can return unicode? If yes there should be an u before string i guess?
Change History (5)
Changed 3 years ago by lpiatek@…
comment:1 Changed 3 years ago by aaugustin
- Needs documentation set
- Needs tests set
- Patch needs improvement unset
- Triage Stage changed from Unreviewed to Design decision needed
comment:3 Changed 2 years ago by aaugustin
- Resolution set to worksforme
- Status changed from new to closed
- UI/UX unset