Je dois créer un List<object>
et mettre en cache la liste et pouvoir y ajouter. Je dois aussi pouvoir l'enlever facilement et le recréer. Quel est un moyen simple d'accomplir cela?Mise en œuvre simple du cache ASP.NET C#
Répondre
Quelque chose comme ça peut-être?
using System;
using System.Collections.Generic;
using System.Web;
public class MyListCache
{
private List<object> _MyList = null;
public List<object> MyList {
get {
if (_MyList == null) {
_MyList = (HttpContext.Current.Cache["MyList"] as List<object>);
if (_MyList == null) {
_MyList = new List<object>();
HttpContext.Current.Cache.Insert("MyList", _MyList);
}
}
return _MyList;
}
set {
HttpContext.Current.Cache.Insert("MyList", _MyList);
}
}
public void ClearList() {
HttpContext.Current.Cache.Remove("MyList");
}
}
En ce qui concerne l'utilisation de .....
// Get an instance
var listCache = new MyListCache();
// Add something
listCache.MyList.Add(someObject);
// Enumerate
foreach(var o in listCache.MyList) {
Console.WriteLine(o.ToString());
}
// Blow it away
listCache.ClearList();
Eh bien ... réparable. Mais je ferais quelques changements. Principalement, je retournerais toujours une liste valide. S'il n'existe pas, créez une nouvelle collection vide et mettez-la en cache, plutôt que de simplement renvoyer tout ce qui est dans Cache ["MyList"], qui peut être nul. – Bryan
Oui Bryan, cet exemple est assez simple. - Mais j'ai pris votre suggestion à coeur et mis à jour mon échantillon. Merci. – jessegavin
Dans la plupart des cas/scénarios les plus réalistes, vous devez vider les modifications vers un type de stockage persistant. – quillbreaker
Ce tutoriel est ce que je trouve être utile
Voici un échantillon
List<object> list = new List<Object>();
Cache["ObjectList"] = list; // add
list = (List<object>) Cache["ObjectList"]; // retrieve
Cache.Remove("ObjectList"); // remove
Les parties de mise en cache de "Tracing and Caching Provider Wrappers for Entity Framework", alors pas simple, encore un très bon examen de certaines choses utiles à penser avec la mise en cache.
Plus précisément, les deux classes InMemoryCache
et AspNetCache
et leurs tests associés:
similaires à ce que la question a fait, vous pouvez envelopper HttpRuntime.Cache
ou HttpContext.Current.Items
ou HttpContext.Current.Cache
dans une implémentation de ICache
.
- 1. mise en œuvre du code simple de certains modèles architecturaux
- 2. Mise en œuvre de cryptage simple en C
- 3. Mise en œuvre pour la mise en cache des requêtes
- 4. Mise en œuvre simple d'Android C2DM requis
- 5. mergesort C mise en œuvre
- 6. C# Mise en cache de la dépendance du cache
- 7. Mise en œuvre du fil
- 8. Mise en œuvre du panneau de mise à jour?
- 9. mise en œuvre générique en C
- 10. Rails Counter Cache et sa mise en œuvre
- 11. Mise en œuvre de Comet pour ASP.NET?
- 12. mise en œuvre GetEnumerator en C++
- 13. Question sur LRU mise en œuvre Cache en Java
- 14. Mise en œuvre rapide du hachage
- 15. ASP.NET MVC2 et la mise en cache du navigateur
- 16. mise en œuvre JS Eval en C#
- 17. Mise en œuvre du protocole Bittorrent
- 18. Persistance utilisateur: asp.net mise en cache:
- 19. mise en œuvre Objective-C du Wilson Score Intervalle
- 20. Mise en œuvre du schéma piratable avec décent C++ FFI
- 21. C++ Stack Tableau mise en œuvre
- 22. mise en œuvre GetHashCode
- 23. GWT mise en œuvre
- 24. Mise en œuvre de la pile C++
- 25. asp.net-mvc: mise en cache javascript
- 26. Mise en cache ASP.net - Utilisation correcte
- 27. mise en cache par requête dans ASP.NET?
- 28. mise en cache asp.net et ado.net
- 29. C# 4 observateur mise en œuvre
- 30. C# Visa 3d Mise en œuvre sécurisée
Gardez à l'esprit que votre liste ne sera pas sécurisée. – dugas