2010-08-09 3 views
0

En examinant mes journaux de Mongrel, j'ai trouvé quelques instructions SQL que je voulais optimiser. Tout en regardant dans ces derniers, j'ai remarqué que ces entrées ont parfois CACHE devant eux, par exemple .:Entrées de journal CACHE Mongrel, en particulier Entrées CACHE pour les instructions SQL

CACHE (0.0ms) SELECT * FROM `customers` WHERE (`customers`.`id` = 35) 

Compte tenu du temps d'exécution, je suppose Mongrel est vraiment en cache ces données. Ma question est comment est-ce configuré? Je n'ai pas été en mesure de trouver beaucoup en ligne sur la mise en cache des données du modèle; La plupart de ce que j'ai lu concerne la mise en cache de pages statiques ou de fragments de pages. Je n'ai rien fait explicitement pour activer cette mise en cache, donc je suis vraiment à la recherche d'un pointeur sur la façon dont il est configuré et comment cela fonctionne. Merci d'avance!

Répondre

1

Ce n'est en fait rien à voir avec le bâtard. Rails fait un ActiveRecord::Base.cache autour de chaque action du contrôleur par défaut. Cela signifie que, dans le cadre de cette action, il mettra en cache les résultats des requêtes et fournira les résultats à partir du cache plutôt que de cliquer à nouveau sur la base de données. Vous devriez voir une requête identique plus haute dans le journal (dans la même action) qui n'est pas préfixée avec CACHE qui est la requête originale pour laquelle les résultats ont été stockés.

Certains plus de détails here.

+0

C'est exactement ce que je cherchais. Merci! –

Questions connexes