以下內容轉載自:http://www.cnblogs.com/fish-li/archive/2011/12/27/2304063.html
通常,我們使用Cache時,一般只有二個操作:讀,寫。
要從Cache中獲取一個緩存項,我們可以調用Cache.Get(key)方法,要將一個對象放入緩存,我們可以調用Add, Insert方法。 然而,Add, Insert方法都有許多參數,有時我們或許只是想簡單地放入緩存,一切接受默認值,那麼還可以調用它的默認索引器, 我們來看一下這個索引器是如何工作的:
public object this[string key]
{
get
{
return this.Get(key);
}
set
{
this.Insert(key, value);
}
}
可以看到:讀緩存,其實是在調用Get方法,而寫緩存則是在調用Insert方法的最簡單的那個重載版本。
注意了:Add方法也可以將一個對象放入緩存,這個方法有7個參數,而Insert也有一個簽名類似的重載版本, 它們有着類似的功能:將指定項添加到 System.Web.Caching.Cache 對象,該對象具有依賴項、過期和優先級策略以及一個委託(可用於在從 Cache 移除插入項時通知應用程序)。 然而,它們有一點小的區別:當要加入的緩存項已經在Cache中存在時,Insert將會覆蓋原有的緩存項目,而Add則不會修改原有緩存項。
也就是說:如果您希望某個緩存項目一旦放入緩存後,就不要再被修改,那麼調用Add確實可以防止後來的修改操作。 而調用Insert方法,則永遠會覆蓋已存在項(哪怕以前是調用Add加入的)。
從另一個角度看,Add的效果更像是 static readonly 的行爲,而Insert的效果則像 static 的行爲。
注意:我只是說【像】,事實上它們比一般的static成員有着更靈活的用法。
由於緩存項可以讓我們隨時訪問,看起來確實有點static成員的味道,但它們有着更高級的特性,比如: 緩存過期(絕對過期,滑動過期),緩存依賴(依賴文件,依賴其它緩存項),移除優先級,緩存移除前後的通知等等。 後面我將會分別介紹這四大類特性。