2010-05-24 4 views
3

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?

Répondre