[連結]使用ASP.NET的Cache

  • 16600
  • 0
  • 2016-03-05

最近的專案中有一個需求,讓一個密碼字串可以在不同的Http Request中共用。第一個想到的,就是Application物件。不過,因為該密碼字串會過期,所以必須另外設定一個機制去處理更換的動作。

這時候,突然想到Cache或許可以使用在這個情境上。

[連結]使用ASP.NET的Cache

最近的專案中有一個需求,讓一個密碼字串可以在不同的Http Request中共用。第一個想到的,就是Application物件。不過,因為該密碼字串會過期,所以必須另外設定一個機制去處理更換的動作。

這時候,突然想到Cache或許可以使用在這個情境上。搜尋了一下,找到了gipi的文章-[ASP.NET]淺談Cache機制,了解到Cache的位置及policy的設定,以及Cache可能帶來的一些問題。

因為我的Cache是Server端的,所以找到黑暗大的這篇文章-TIPS-ASP.NET Cache Mini Guide。他很簡潔地說明了Cache與Application的不同。

跟Application比起來,Cache多了很多彈性,它可以設定Dependency(例如: 某個File一旦變動Cache內容就會自動被移除)、設定某個時間後移除、也可以設定無人使用後多久自動消失(這點又跟Session的20分鐘保存期限很像),還可以指定當Cache被移除時要呼叫的函數

另外,保哥也有篇文章-正確的使用 ASP.NET 的 Cache 物件,說明如何處理Cache的Null問題。他建議先使用as先進行轉型,然後才取值。這是因為Cache使用WeakReference進行實作,所以可以取得參考物件的強式參考,以防止該物件被回收。Code Sample如下:

SomeClass class1 = Cache["KeyName"] as SomeClass;
if (class1 != null)
{
    string name = class1.Name;
} 

另外,考量未來Web Server的Scalibility。.NET 4.0出現了一個可以跨Web與非Web專案的Cache機制- Object Caching。保哥也有篇文章進行了簡單的說明-ASP.NET 4 快取 API 有兩種:Cache 與 ObjectCache。所以,我就挑了現有了MemoryCache來實作我的Cache機制。有眾位前輩們的佛心分享,真是我們.NET開發者的一大福音啊。