J'ai implémenté la mise en cache dans mon application django et utilisé la mise en cache par vue via l'API de cache et la mise en cache des fragments de gabarit. Sur certaines de mes pages, j'utilise un tag de modèle django personnalisé, ce tag est fourni via un développeur tiers, il prend des arguments dans ses balises de template, puis envoie une requête à un serveur distant, renvoie la réponse par XML, puis rend le résultat dans ma page. Grand - Je pensais que je pouvais facilement mettre en cache les en utilisant la mise en cache de fragments, donc je:La mise en cache des fragments de gabarit ne semble pas fonctionner pour certaines balises de gabarit personnalisées
{% load cache %}
{% cache 500 request.user.username %}
{% load third party custom tags %}
{% expensive custom tag set that gets stuff from a third party server via xml %}
{{ some.stuff}}
{% endcache %}
Le problème est peu importe ce que je fais, les demandes se encore décocha à ce serveur à distance, il semble Django n'aime pas mettre en cache ces balises de modèle personnalisé. Je sais que memcached fonctionne très bien, pour d'autres vues et modèles, tout fonctionne très bien. Est-ce que je fais quelque chose qui est incompatible avec la mise en cache des fragments? Y a-t-il un moyen de contourner cela?
Mais ne changerait-il pas le nom en "customxml" serait un désastre? Est-ce que cela ne montrerait pas les données des utilisateurs les uns aux autres - ou, plutôt, montrerait à tous les utilisateurs les données de tous les autres qui visitent ensuite la page? –
Cela dépend de l'objectif de la balise template. Est-ce que les données sont sensibles et uniques à l'utilisateur? Si oui, je serais d'accord et il serait préférable d'utiliser le cache de bas niveau et ré-implémenter la balise de modèle. Si les données sont les mêmes pour chaque utilisateur, l'utilisation de "customxml" serait acceptable. – richleland