Как HttpContext.Current.Cache сохраняет объекты в памяти?
Я использую HttpContext.Current.Cache
сохранить объекты в память.
Код, который у меня есть, выглядит примерно так:
public void Add(string key, object data, TimeSpan slidingExpirationTime)
{
HttpContext.Current.Cache.Insert(key, data, null, System.Web.Caching.Cache.NoAbsoluteExpiration, slidingExpirationTime);
}
public T Get<T>(string key)
{
T itemStored = (T)HttpContext.Current.Cache.Get(key);
if (itemStored == null)
itemStored = default(T);
return itemStored;
}
Это работает очень быстро!
Меня интересует, как он сохраняет объект в памяти.
Сохраняет ли это значение указателя или хэширует объект, затем сохраняет его в памяти, и когда я запрашиваю его, он десериализует его обратно?
1 ответ
Решение
Данные, это своего рода object
и из внутренней функции, которая вставляет ключ кеша, мы видим, что просто сохранить ссылку на object
internal CacheEntry(string key, object value, CacheDependency dependency, CacheItemRemovedCallback onRemovedHandler, DateTime utcAbsoluteExpiration, TimeSpan slidingExpiration, CacheItemPriority priority, bool isPublic) : base(key, isPublic)
{
if (value == null)
{
throw new ArgumentNullException("value");
}
.... code ....
this._value = value;
.... code ....
}