Je commence à utiliser Memcached pour rendre mon site plus rapide. Pour données constantes dans ma base de données J'utilise ceci:Utiliser Memcached en Python/Django - questions
from django.core.cache import cache
cache_key = 'regions'
regions = cache.get(cache_key)
if result is None:
"""Not Found in Cache"""
regions = Regions.objects.all()
cache.set(cache_key, regions, 2592000) #(2592000sekund = 30 dni)
return regions
Pour rarement des changements de données que j'utilise des signaux:
from django.core.cache import cache
from django.db.models import signals
def nuke_social_network_cache(self, instance, **kwargs):
cache_key = 'networks_for_%s' % (self.instance.user_id,)
cache.delete(cache_key)
signals.post_save.connect(nuke_social_network_cache, sender=SocialNetworkProfile)
signals.post_delete.connect(nuke_social_network_cache, sender=SocialNetworkProfile)
Est-il correctement?
J'ai installé django-memcached-0.1.2, qui me montrent:
Memcached Server Stats
Server Keys Hits Gets Hit_Rate Traffic_In Traffic_Out Usage Uptime
127.0.0.1 15 220 276 79% 83.1 KB 364.1 KB 18.4 KB 22:21:25
quelqu'un peut-il expliquer ce que signifie colonnes?
Et la dernière question. J'ai des modèles où j'obtiens beaucoup d'enregistrements de quelques tables (relations). Donc, à mon avis, je reçois des enregistrements d'une table et dans les modèles le montrent et des informations connexes des autres. La page de génération dure quelques secondes pour une très petite table (< 100 enregistrements). Est-ce un moyen facile de mettre en cache des requêtes à partir de modèles ou de toutes les pages? Ai-je besoin de faire une grande structure dans ma vue (avec toutes les tables liées), le mettre en cache et l'envoyer au template? C'est un moyen plus facile?