2010-02-11 3 views

Répondre

1

Rose::DB::Object::Cached met en cache des objets dans une mémoire non partagée (non partagée). Sous mod_perl, cela signifie que chaque processus apache a son propre cache. Vous pouvez cependant mettre en cache vos objets au démarrage du serveur. Tous ces objets mis en cache seraient ensuite partagés avec chaque processus enfant apache. Cela est particulièrement utile pour les objets en lecture seule que vous ne prévoyez pas modifier pendant la vie du serveur.

Pour des options de mise en cache plus flexibles, consultez Rose::DBx::Object::Cached::CHI. En ce qui concerne votre deuxième question, Rose::DB::Object::Cached ne lit et écrit dans le cache que sur load() et save(). La plupart des méthodes relationnelles utilisent des requêtes Manager pour obtenir des objets et ne peuvent donc pas lire le cache Rose::DB::Object::Cached.

+0

merci John, que recommandez-vous pour la route du gestionnaire? – Timmy

+0

Je recommande de ne mettre en cache rien sauf les objets en lecture seule. Dans mon expérience, la mise en cache à un niveau supérieur (par exemple, des composants de pages ou des pages entières) ou un niveau inférieur (par exemple, un cache devant la base de données) tend à être plus fructueux que la mise en cache au niveau base de données. . –

+0

Ils sont, 99% du temps en lecture seule. Peut-être des choses très mineures qui vont changer, mais elles seront dominées par la lecture, et ne sont pas nécessaires à jour. Presque comme avoir une table "id, couleur, description" - id, la couleur sera toujours la même, et la description peut changer de temps en temps, mais n'est pas nécessaire. Je suis passé à utiliser Rose :: DBx :: Object :: Cached :: CHI pour jouer avec, et il aide déjà beaucoup, sauf pour l'incertitude avec les choses de gestionnaire. – Timmy