**BACKWARDS-INCOMPATIBLE** Added new COMPRESS_CACHE_KEY_FUNCTION setting to define the function which is used to create the cache key. Fixes #61.

This commit is contained in:
Jannis Leidel
2011-08-09 12:20:13 +02:00
parent ddc6710dd8
commit 25088b93c0
3 changed files with 21 additions and 2 deletions

View File

@@ -5,8 +5,10 @@ import time
from django.core.cache import get_cache
from django.utils.encoding import smart_str
from django.utils.hashcompat import md5_constructor
from django.utils.importlib import import_module
from compressor.conf import settings
from compressor.utils import get_mod_func
def get_hexdigest(plaintext, length=None):
@@ -15,10 +17,18 @@ def get_hexdigest(plaintext, length=None):
return digest[:length]
return digest
def simple_cachekey(key):
return 'django_compressor.%s' % smart_str(key)
def get_cachekey(key):
return ("django_compressor.%s.%s" % (socket.gethostname(), key))
def socket_cachekey(key):
return "django_compressor.%s.%s" % (socket.gethostname(), smart_str(key))
try:
mod_name, func_name = get_mod_func(settings.COMPRESS_CACHE_KEY_FUNCTION)
get_cachekey = getattr(import_module(mod_name), func_name)
except (AttributeError, ImportError), e:
raise ImportError("Couldn't import cache key function %s: %s" %
(settings.COMPRESS_CACHE_KEY_FUNCTION, e))
def get_mtime_cachekey(filename):
return get_cachekey("mtime.%s" % get_hexdigest(filename))

View File

@@ -46,6 +46,8 @@ class CompressorSettings(AppSettings):
# the cache backend to use
CACHE_BACKEND = None
# the dotted path to the function that creates the cache key
CACHE_KEY_FUNCTION = 'compressor.cache.simple_cachekey'
# rebuilds the cache every 30 days if nothing has changed.
REBUILD_TIMEOUT = 60 * 60 * 24 * 30 # 30 days
# the upper bound on how long any compression should take to be generated

View File

@@ -9,6 +9,13 @@ HEAD
has the potential to breaking lots of apps but on the other hand
will help find bugs.
- **BACKWARDS-INCOMPATIBLE** The default function to create the cache
key stopped containing the server hostname. Instead the cache key
now only has the form ``'django_compressor.<KEY>'``.
To revert to the previous way simply set the ``COMPRESS_CACHE_KEY_FUNCTION``
to ``'django_compressor.cache.socket_cachekey'``.
- Added Compass filter (beta).
- Fixed compiler filters on Windows.