web-dev-qa-db-fra.com

Comment mettre en cache les données sur le serveur dans asp.net mvc 4?

Je travaille sur l'application web mvc4. Je souhaite mettre en cache certains résultats et vues de requêtes de base de données côté serveur. J'ai utilisé-

HttpRuntime.Cache.Insert()

mais il met en cache les données côté client. Veuillez aider.

21
vivek

J'utilise MemoryCache pour stocker les résultats des requêtes, et cela fonctionne bien jusqu'à présent.
Voici quelques liens que j'ai utilisés pour l'implémenter.
- tilisation de MemoryCache dans .NET 4.0 (codeproject)
- tilisation de MemoryCache dans .NET 4.0 (entrée de blog)

En les lisant maintenant, je ne les trouve pas si clairs, alors peut-être y a-t-il un meilleur lien que j'ai perdu quelque part.
Voici un exemple de mon code qui, je l'espère, est suffisamment clair pour que vous puissiez voir comment il fonctionne

public static class AgencyCacheManager
{
    private static MemoryCache _cache = MemoryCache.Default;

    public static List<RefAgency> ListAgency
    {
        get
        {
            if (!_cache.Contains("ListAgency"))
                RefreshListAgency();
            return _cache.Get("ListAgency") as List<Agency>;
        }
    }

    public static void RefreshListAgency()
    {
        var listAgency = GetAllComplete();

        CacheItemPolicy cacheItemPolicy = new CacheItemPolicy();
        cacheItemPolicy.AbsoluteExpiration = DateTime.Now.AddDays(1);

        _cache.Add("ListAgency", listAgency, cacheItemPolicy);
    }
}

Et pour récupérer la liste du cache

public Agency FindBy(string agencyId)
{
    return AgencyCacheManager.ListAgency.SingleOrDefault(x => x.AgencyPartnerCode == agencyId);
}
40
darkchico