Ich habe eine Website, wo ich eine Menge Informationen zwischenspeichern. Ich sehe widersprüchliche Informationen zum Speichern von Inhalten im asp.net-Cache.Was ist der effizienteste Weg zum Speichern/Abrufen von Elementen in asp.net httpContext.Cache
Zum Beispiel kann sagen, dass ich diese Datenstruktur:
Dictionary<string, List<Car>> mydictionary;
Ich konnte die ganze Sache mit einem String-Schlüssel als „MyDictionary“ speichern und dann einen Drilldown, sobald ich das Objekt herausziehen.
HttpContext.Cache.Add("MyDictionary",
mydictionary,
null,
Cache.NoAbsoluteExpiration,
new TimeSpan(10, 0, 0),
CacheItemPriority.Normal,
null);
var myDict = HttpContext.Cache["MyDictionary"] as Dictionary<string, List<Car>>;
Das andere, was ich tun könnte, ist es brechen und speichern Sie jedes Element in meinem Wörterbuch separat im Cache (angesichts der Cache ist ein Wörterbuch sowieso).
Dictionary<string, List<Car>> mydictionary;
foreach (var item in mydictionary.Keys)
{
HttpContext.Cache.Add(item, mydictionary[item], null, Cache.NoAbsoluteExpiration, new TimeSpan(10, 0, 0), CacheItemPriority.Normal, null);
}
var myitem = "test";
var myDict = HttpContext.Cache[myItem] as List<Car>;
Würde die Implikation Leistung sehr unterschiedlich sein (da ich gehe davon aus, dass alles irgendwie in Erinnerung ist?)
Denken Sie daran, dass Caches Mittel sind, um die Kosten für die Neuerstellung häufig verwendeter "teurer" Objekte zu sparen (dh die Kosten für die Neuerstellung übersteigen die Kosten für das Caching). Wenn es sich lohnt, zwischenzuspeichern, lassen Sie zu, dass der Cache LRU-Regeln anwendet, um die Leistung zu maximieren. Wenn Sie alle Einträge in einen einzigen Cache-Eintrag ('MyDictionary') setzen, wird die LRU besiegt und Sie riskieren, dass Sie die gesamte Menge verlieren, sollte der Cache entscheiden, dass MyDictionary weniger effizient ist als andere Einträge. – Will