2010-11-22 21 views
5

Es ist nicht zu schwer, eine bestimmte Vorlage Cache in django ungültigDjango - django Template-Cache basierend auf Variablen

def invalidate_cache_key(fragment_name, *variables): 
    args = md5_constructor(u':'.join([urlquote(var) for var in variables])) 
    cache_key = 'template.cache.%s.%s' % (fragment_name, args.hexdigest()) 
    cache.delete(cache_key) 

Ich habe jedoch eine Situation ablaufen, wo ich alle zwischengespeicherten Fragmente müssen gelöscht werden, die eine bestimmte Variable gehabt haben ging zu ihnen. Löschen Sie beispielsweise alle zwischengespeicherten Fragmente über die Automarke "Toyota".

{% cache 100000 car_content car.brand %} 

Im Wesentlichen ist es eine Möglichkeit, alle cache_keys zu erhalten, basierend auf einem bestimmten Satz von Kriterien? Ich habe gefährlich über das Ändern der Cache-Quelle nachgedacht, aber ich habe mich gefragt, ob es eine bessere Lösung für dieses Problem geben könnte.

Antwort

0

Verwenden Sie ein Datum im Cache-Schlüssel:

{% cache 100000 car_content car.brand car.brand.last_modified %} 

Auf diese Weise alle Fragmente jedes Mal erstellt werden die Marke geändert wird.

Verwandte Themen