2013-03-07 55 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 2013-03-07 14:24:06

+0

@RaraituL是的,那是爲什麼。 – Aristos 2013-03-07 14:34:27