Tengo un sitio web donde guardo mucha información. Estoy viendo información conflictiva sobre el almacenamiento de cosas en la caché asp.net.¿Cuál es la forma más eficiente de almacenar/recuperar elementos en asp.net? HttpContext.Cache
Por ejemplo Digamos que tengo esta estructura de datos:
Dictionary<string, List<Car>> mydictionary;
que podría almacenar todo el asunto con una llave de cadena como "MyDictionary" y luego perforar hacia abajo una vez que saco el objeto.
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>>;
La otra cosa que podría hacer es romper hacia abajo y almacenar cada elemento en mi diccionario separado en la memoria caché (dada la caché es un diccionario de todos modos).
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>;
¿Sería la implicación de rendimiento muy diferentes (dada estoy asumiendo que todo está en la memoria de todos modos?)
Recuerde que los cachés son medios para ahorrar el costo de recrear objetos "caros" frecuentemente utilizados (es decir, el costo de recreación excede el costo del almacenamiento en caché). Si vale la caché, permita que la memoria caché aplique las reglas LRU para maximizar el rendimiento. Al poner todas las entradas en una sola entrada de caché ('MyDictionary') se vence el LRU y se corre el riesgo de perder todo el lote si el caché decide que mantener MyDictionary es menos eficiente que mantener otras entradas. – Will