2010-12-14 139 views

Répondre

1

Eh ... Je ferais attention à ce sujet. Le modèle est traité à chaque demande. Vous ne voulez pas simplement le mettre en cache, bon gré mal gré; les données peuvent (et vont probablement) changer.

Heureusement, Django fournit la mise en cache. Je ne suis pas sûr si elle définit correctement le non-cache, mais il empêche définitivement les requêtes répétées qui ne sont pas nécessaires. C'est ce que vous voudriez utiliser.

Lire sur http://docs.djangoproject.com/en/dev/topics/cache/

10

Vous pouvez écrire un middleware personnalisé (non testé, commencez par quelque chose comme ça et regarder docs). Il peut économiser beaucoup de ressources réseau pour un site qui donne des informations assez statiques, comme des résultats de loterie ou des cotations boursières historiques, par exemple.

# my_middleware.py 
from django.conf import settings 

# default 30 days 
MAX_AGE = getattr(settings, 'CACHE_CONTROL_MAX_AGE', 2592000) 

class MaxAgeMiddleware(object): 
    def process_response(self, request, response): 
     response['Cache-Control'] = 'max-age=%d' % MAX_AGE 
     return response 

Ajoutez votre middleware dans settings.py MIDDLEWARE_CLASSES; le middleware est comme les couches d'oignon - l'ordre est important, pendant la phase de réponse, les premières sont traitées en dernier.

Set CACHE_CONTROL_MAX_AGE ou tout autre paramètre et lui donner un essai.