purge crochets django-cache-est une application Django réutilisables pour gérer cache invalidation.
Cette application fournit essentiellement un mécanisme pour accrocher facilement dans les callbacks de modèle pour invalider le cache frontal en cas de besoin.
Actuellement, seul un backend de vernis est mis en œuvre, mais il a été créé avec d'autres backends possibles à l'esprit.
Utilisation
Ajouter »cache_purge_hooks à ton INSTALLED_APPS.
#our modèle semblant
classe Post (models.Model):
& Nbsp; title = models.CharField (max_length = 200)
& Nbsp; slug = models.SlugField (unique = True, max_length = 200)
& Nbsp; body = models.TextField (blanc = True, null = True)
de cache_purge_hooks importation cache_purge_hook
cache_purge_hook (Post)
Comme indiqué ci-dessus, le module de cache_purge_hooks contient une fonction cache_purge_hook. Passer comme premier argument un modèle. Le mécanisme de cache Piggy-Back sur get_absolute_url () la méthode de l'instance de modèle et efface le cache de backend pour une URL donnée.
Si ne importe quelle instance a plusieurs urls connexes, définir une méthode personnalisés get_absolute_urls () qui retourne une liste d'URL à invalider:
Catégorie classe (models.Model):
& Nbsp; name = models.CharField (max_length = 200)
& Nbsp; slug = models.SlugField (unique = True, max_length = 200)
& Nbsp; title = models.CharField (max_length = 127, vide = True)
& Nbsp; def get_absolute_url (auto):
& Nbsp; & nbsp; & nbsp; retourner inverse («catégorie», kwargs = {
& Nbsp; & nbsp; & nbsp; & nbsp; & nbsp; «Catégorie»: self.slug
& Nbsp; & nbsp; & nbsp; })
& Nbsp; get_absolute_urls def (auto):
& Nbsp; & nbsp; & nbsp; gau = self.get_absolute_url ()
& Nbsp; & nbsp; & nbsp; retourner [gau, inverser ('blog_home'),]
Dans le modèle ci-dessus, nous avons un modèle Catégorie de blog. Ce est la méthode de get_absolute_url () est lié à une route nommée notamment défini dans urls.py, mais toute modification de la catégorie doit également se refléter dans la page blog de la maison (disons par exemple, la page d'accueil contient un nuage de tags de toutes les catégories). Cette page doit être invalidée lorsque cette information est modifiée.
Notez que vous devez également prendre explicitement la valeur get_absolute_url (). Il ne sera pas appelé si get_absolute_urls () existe.
Si ce ne est pas à votre goût, vous pouvez aussi passer pour un 2ème argument purge_related_blog une fonction qui prend une instance et renvoie une liste d'URL.
Par exemple:
de facebook_comments.models importer FacebookCommentCache
def purge_related_blog (exemple):
& Nbsp; pr = urlparse.urlparse (instance.url)
& Nbsp; retourner [pr.path,]
cache_purge_hook (FacebookCommentCache, purge_related_blog)
Ce est également utile parce que dans le cas ci-dessus, le site est en utilisant une autre application réutilisable (de facebook_cached_comments). . Ce est beaucoup mieux que le piratage d'un code tiers pour fournir un get_absolue_urls ()
Exigences :
- Python
- Django
- python-vernis
Commentaires non trouvées