260 votes

Comment mettre en cache des données dans une application MVC

J'ai lu beaucoup d'informations sur la page en cache et partielle de la page en cache dans une application MVC. Cependant, je voudrais savoir comment vous mettre en cache des données.

Dans mon scénario, je vais être à l'aide de LINQ to entities (entity framework). Sur le premier appel à getnames a (ou quelle que soit la méthode) je tiens à saisir les données de la base de données. Je veux enregistrer les résultats dans le cache et sur le deuxième appel à l'utilisation de la version en cache si elle existe.

Quelqu'un peut montrer un exemple de comment cela peut fonctionner, ce doit être mise en œuvre (modèle?) et si cela fonctionnerait.

J'ai vu ce traditionnelles ASP.NET apps , généralement pour de très statique des données.

411voto

Hrvoje Points 4248

Voici le gentil service de Cache que j’utilise :

Utilisation :

Fournisseur de cache vérifiera s’il y a quoi que ce soit par le nom de « id de cache » dans le cache, et si il n’existe pas, il appelle une méthode déléguée pour extraire les données et le stocker dans le cache.

Exemple :

79voto

terjetyl Points 4969

Référencer la dll System.Web dans votre modèle et utiliser System.Web.Caching.Cache

Un peu simplifié, mais je suppose que cela fonctionne. Ce n’est pas spécifique de MVC et j’ai toujours utilisé cette méthode pour la mise en cache de données.

43voto

Oli Points 892

Je parle de TT la poste et suggère la démarche suivante:

Référence du Système.Web dll dans votre modèle et l'utilisation Système.Web.La mise en cache.Cache

public string[] GetNames()
{ 
    var noms = Cache["names"];
    if(noms == null) 
    {    
        noms = DB.GetNames();
        Cache["names"] = noms; 
    }

    return ((string[])noms);
}

Vous ne devriez pas retourner une valeur à la re-lecture de la mémoire cache, car vous ne saurez jamais si, à ce moment précis, il est encore dans le cache. Même si vous avez inséré dans la déclaration avant, c'est peut-être déjà disparu ou n'a jamais été ajouté le cache, tu ne sais pas.

Si vous ajoutez les données lues à partir de la base de données et le retourner directement, ne pas re-lecture à partir du cache.

26voto

Brendan Enrick Points 2892

Steve Smith a fait deux grands messages de blog qui démontrent comment utiliser son CachedRepository modèle dans ASP.NET MVC. Il utilise le modèle de référentiel de manière efficace et vous permet d'obtenir la mise en cache sans avoir à changer votre code existant.

http://stevesmithblog.com/blog/introducing-the-cachedrepository-pattern/

http://stevesmithblog.com/blog/building-a-cachedrepository-via-strategy-pattern/

Dans ces deux postes, il vous montre comment mettre en place ce modèle et explique aussi pourquoi il est utile. En utilisant ce modèle, vous obtenez la mise en cache sans votre code existant en voir la mise en cache de la logique. Essentiellement, vous utilisez le cache référentiel comme si c'était un autre référentiel.

4voto

Arun Duth Points 41

Mise en cache AppFabric est distribué et une en mémoire cache technic qui stocke des données dans des paires clé-valeur à l’aide de la mémoire physique sur plusieurs serveurs. AppFabric offre des performances et améliorations d’évolutivité pour les applications .NET Framework. Concepts et Architecture

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X