Cache 即快取記憶體.那麼cache是怎麼樣提高系統性能與運行速度呢?是不是在任何情況下用cache都能提高性能?是不是cache用的越多就越好呢?下面是個人寫下的總結如下,有不對的地方,請各位指正:
1.Cache 是怎麼樣工作的?
Cache 是分配在伺服器上的一個公共的記憶體片。
所謂公共指的cache只要一創建是任何一個用戶端瀏覽器都可以通過後台代碼訪問到它,它面向的是所有使用者,相對而言session也是伺服器上的一 段記憶體,但他面向的是單個使用者。它是伺服器的一段區塊,也就是說每個cache一經創建就佔用了伺服器資源的。所以從這點來說我們就可以說:並不是 cache越多越好。
cache 是有時間限制的,超過了伺服器設定的過期時間,它就會被伺服器回收。
cache 可以存放任何物件

 

2.Cache 怎麼樣創建以及怎麼樣銷毀
創建cache
在DotNet環境下通過Cache.Insert(string key,object o),Insert(objectkey, objObject, CacheDependency Dependency, DateTime.absoluteExpiration, TimeSpan.Zero);等方法創建。
其中key 代表cache的ID,o代表存到cache裡的物件,DateTime.absoluteExpiration代碼有效時間段。
如下代碼
/// <summary>
/// 添加到緩存
/// </summary>
/// <param name="objectkey"></param>
/// <param name="objObject"></param>
public static void SetCache(string objectkey, object objObject)
{
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
objCache.Insert(objectkey, objObject);
}
/// <summary>
/// 添加到緩存
/// </summary>
/// <param name="objectkey"></param>
/// <param name="objObject"></param>
/// <param name="minutes">分鐘</param>
public static void SetCache(string objectkey, object objObject, int minutes)
{
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
objCache.Insert(objectkey, objObject, null, DateTime.Now.AddMinutes(minutes), TimeSpan.Zero);
}

 

銷毀cache
通過方法Cache.Remove(string key)
其中key 代表cache的 ID.
/// <summary>
/// 清除緩存
/// </summary>
/// <param name="objectkey"></param>
public static void ClearCache(string objectkey)
{
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
objCache.Remove(objectkey);
}
調用cache
Cache支援裝箱/拆箱操作。如你可以把一個Class物件name 通過Cache.Insert(「ClassCache」,name)的方式存到Cache中,可以通過拆箱操作Class name = (Class)Cache[「ClassCache」]來訪問它。
CommonPage chinaCity = (CommonPage)Utils.CacheManage.GetFromCache("chinaCity");

 

/// <summary>
/// 從緩存獲取
/// </summary>
/// <param name="objectkey"></param>
/// <returns></returns>
public static object GetFromCache(string objectkey)
{
System.Web.Caching.Cache objCache = HttpRuntime.Cache;
return objCache[objectkey];
}

 

3.什麼時候用cache
Cache 一般用於資料較固定,用的較頻繁的地方。例如可以把進銷存系統中可以把產品資訊存入cache,在使用者調用產品資訊時通過調用cache即可,這樣從很大 程度上減少了使用者與資料庫的交互,提高了系統的性能。反之,cache不適合用在資料變動快,使用範圍很窄的地方。例如把一個具體採購單存入 cache中。

 

4.cache 調用注意事項
Cache是有時間限制的。超過了伺服器設置的過期時間,就會被伺服器回收。當cache被回收後對應的區塊就會被清空,再次通過cache[「cachekey」]訪問物件時返回的就是null值。所以正常的取值方法如下:
CommonPage chinaCity = (CommonPage)Utils.CacheManage.GetFromCache("chinaCity");
if (chinaCity == null)
{
ChinaDao chDao = new ChinaDao();
chinaCity = chDao.GetChinaCityByPlot();
Utils.CacheManage.SetCache("chinaCity", chinaCity, 60);
}
return chinaCity;
創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()