Hey

,
Zeus n'a pas vraiment donné la notion à laquelle je pense, j'aimerais apporter une précision.
Si le modèle est utilisé par seulement un contrôleur (une sorte de dépendance forte, genre une agrégation ou une composition), alors inutile de mettre le modèle en cache. Tu peux tout gérer dans le contrôleur, ce serait plus simple. En revanche, si le modèle est partagé par plusieurs contrôleurs, Zeus a bien expliqué la chose, il faut savoir où tu veux intervenir.
Soit tu ne veux pas exécuter 50 fois l'accès aux données (par exemple une requête SQL), dans ce cas tu mets le modèle en cache. Soit tu ne veux pas exécuter 50 fois le traitement des données, dans ce cas, tu mets le contrôleur en cache (quand je dis le modèle ou contrôleur en cache, je parle de leur traitement et pas de leur instance, bref c'est un détail, passons).
Maintenant, observons deux secondes le phénomène. Mon modèle me propose des données, et mon contrôleur les traite. Je ne veux pas faire le traitement 800 fois, donc je mets le résultat du traitement en cache. Donc, il est forcément utile de mettre également le traitement du modèle en cache, sinon tu ne fais que la moitié du travail.
Donc la façon de faire le cache sera important. Soit tu as une plage de code en cache : plusieurs lignes de code qui comprennent l'accès au modèle, l'obtention et le traitement du résultat, soit tu as une mise en cache atomique : c'est à dire traitement par traitement.
Tu as donc deux niveaux/concepts à te figurer, comme l'a précisé Zeus, qui sont influencés par ta façon de travailler.