2010-08-13 6 views
1

Sur un site web que je crée, il y a une section qui frappe la base de données assez fort. Plus dur que je veux. Les données récupérées sont toutes très statiques. Cela changera rarement. Donc je veux le mettre en cache.Comment mettre en cache une liste/un dictionnaire dans Pylons?

je suis tombé sur http://wiki.pylonshq.com/display/pylonsdocs/Caching+in+Templates+and+Controllers et avait une bonne lecture ont été en utilisant la mise en cache de modèle à l'aide:

return render('tmpl.html', cache_expire='never') 

Cela fonctionne très bien jusqu'à ce que je modifie le code HTML. Le seul moyen que j'ai trouvé pour supprimer le cache est de supprimer le paramètre cache_expire de render() et de supprimer le dossier de cache. Mais, mec, ça marche. Ce que je veux pouvoir, cependant, c'est les listes de cache, les tuples et les dictionnaires. De la lecture de la page wiki ci-dessus, il semble que ce n'est pas possible?

Je veux être capable de faire quelque chose comme:

data = [i for i in range(0, 2000000)] 
mycache = cache.get_cache('cachename') 

value = mycache.get(key='dataset1', list=data, type='memory', expiretime='3600') 

print value 

Permettant moi de faire une unité centrale de traitement travail intensif (génération de liste, dans cet exemple), puis en cache.

Est-ce que cela peut être fait avec des pylônes?

Répondre

1

Comme alternative au cache traditionnel, vous pouvez utiliser des variables globales d'application. Une fois au démarrage du serveur, chargez les données dans la variable, puis utilisez les données dans vos actions ou directement dans les modèles.

http://pylonsbook.com/en/1.1/exploring-pylons.html#app-globals-object

vous pouvez également le code des mesures pour mettre à jour cette variable globale via l'interface d'administration ou par d'autres événements.

1

Pourquoi ne pas utiliser memcached?
Regardez cette question sur SO sur la façon de l'utiliser avec des pylônes: Pylons and Memcached

Questions connexes