2013-03-07 3 views
1

Я использую 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; 
} 

Это работает очень быстро!

Я любопытно, как он сохраняет объект в памяти.

Сохраняет ли значение указателя, или оно хеширует объект, а затем сохраняет его в память, а когда я его запрашиваю, оно десериализует его обратно?

ответ

0

Данные, является своего рода 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 .... 
} 
+0

Вот почему это так быстро? он не обрабатывает объект? – Catalin

+0

@ RaraituL Да, вот почему. – Aristos