2010-11-22 23 views
5

Onun değil ben belli değişken oldu önbelleğe alınmış tüm parçaları silmek için gereken yereDjango - değişkenlere dayalı Django şablon önbellek sona

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) 

Ancak bir durum var django belirli bir şablon önbellek geçersiz zor Onlara geçti. Örneğin, 'Toyota' otomobil markasıyla ilgili tüm önbelleğe alınmış parçaları silin.

{% cache 100000 car_content car.brand %} 

Temel olarak, tüm cache_keylerini belirli bir ölçütler kümesine göre elde etmenin bir yolu var mı? Önbellek kaynağını değiştirmek konusunda tehlikeli bir şekilde düşündüm ama bu sorun için daha iyi bir çözüm olup olmadığını merak ediyordum.

cevap

0

önbellek anahtarında bir tarihi kullanın:

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

tüm fragmanları marka olarak alır her zaman oluşturulur Bu şekilde.