spurgo ganci django-cache-è un app Django riutilizzabile per gestire la cache invalidazione.
Questa applicazione fornisce essenzialmente un meccanismo per collegare facilmente nel modello callback per invalidare la cache front-end quando necessario.
Attualmente, solo un backend di vernice è implementato, ma il progetto è stato creato con altri possibili backend in mente.
Utilizzo
Aggiungi 'cache_purge_hooks' al vostro INSTALLED_APPS.
#our modello finta
classe Post (models.Model):
& Nbsp; title = models.CharField (max_length = 200)
& Nbsp; slug = models.SlugField (unico = True, max_length = 200)
& Nbsp; body = models.TextField (vuoto = true, null = True)
da cache_purge_hooks import cache_purge_hook
cache_purge_hook (Post)
Come indicato in precedenza, il modulo cache_purge_hooks contiene una funzione cache_purge_hook. Passare come primo argomento di un modello. Il meccanismo di cache piggy-back sul metodo dell'istanza modello get_absolute_url () e cancella la cache backend per quel particolare URL.
Se una istanza ha più URL relativi, definire un metodo get_absolute_urls personalizzati (), che restituisce un elenco di URL per invalidare:
Classe Categoria (models.Model):
& Nbsp; name = models.CharField (max_length = 200)
& Nbsp; slug = models.SlugField (unico = True, max_length = 200)
& Nbsp; title = models.CharField (max_length = 127, bianco = True)
& Nbsp; def get_absolute_url (self):
& Nbsp; & nbsp; & nbsp; ritorno inverso ("categoria", kwargs = {
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; "Categoria": self.slug
& Nbsp; & nbsp; & nbsp; })
& Nbsp; get_absolute_urls def (auto):
& Nbsp; & nbsp; & nbsp; gau = self.get_absolute_url ()
& Nbsp; & nbsp; & nbsp; ritorno [gau, reverse ('blog_home'),]
Nel modello di cui sopra, abbiamo un modello di categoria post sul blog. E 'il metodo get_absolute_url () è legato ad un particolare percorso di nome definito in urls.py, ma qualsiasi modifica alla categoria deve riflettersi anche nella home page del blog (diciamo per esempio, la home page contiene una tag cloud di tutte le categorie). Questa pagina deve essere invalidata quando le informazioni sono cambiato.
Si noti si deve anche prendere in modo esplicito il valore get_absolute_url (). Non verrà chiamato se get_absolute_urls () esiste.
Se questo non è di vostro gradimento, potete anche passare come un 2 ° argomento purge_related_blog una funzione che prende un'istanza e restituisce una lista di URL.
Per esempio:
da facebook_comments.models importare FacebookCommentCache
def purge_related_blog (esempio):
& Nbsp; pr = urlparse.urlparse (instance.url)
& Nbsp; ritorno [pr.path,]
cache_purge_hook (FacebookCommentCache, purge_related_blog)
Questo è utile anche perché nel caso di cui sopra, il sito sta utilizzando un'altra app riutilizzabili (facebook_cached_comments). . Questo è molto meglio di hacker di un codice di terze parti per fornire un get_absolue_urls ()
Requisiti :
- Python
- Django
- python-vernici
I commenti non trovato