HttpContentProvider訪問緩存
今天我們來介紹 IsLine.HttpContent.HttpContentProvider命名空間:
這個Provider主要封裝了對緩存、Session與Cooike的操作,該空間下主要有三個類:CookieProvider 、SessionProvider、CacheProvider。
關於約束
這三個類庫統一實現ICapability接口,ICapability繼承自IBaseCapability接口,IBaseCapability 規范了HttpContentProvider的基礎能力,而ICapability則是對基礎能力的擴展,如下:
代碼
namespace IsLine.HttpContent.HttpContentProvider
{
public interface IBaseCapability
{
bool Remove(string Name);
bool IsExit(string Name);
}
public interface ICapability : IBaseCapability
{
object GetContent(string Name);
bool UpdateContent(string Name, object value);
}
}
可以看出,接口主要約束了如何刪除、獲得與更新一個對象,即約束了Session、Cookie、Cache的行 為。
CacheProvider類
首先來看看有關Cache的操作,CacheProvider支持.Net兩種類型的Cache:運行時 Cache (HttpRuntime.Cache)與上下文Cache(HttpContext.Current.Cache),這兩種Cache有什麼區別呢?這裡 簡單的解釋一下:
HttpRuntime.Cache是Application級別的,而HttpContext.Current.Cache是僅對當前WEB頁面請求才 有效的。換句話說,HttpRuntime Cache所有的web與非web程序都可以調用,而HttpContext則只能用在 WEB中。
緩存中的數據是易失的,數據並不是在整個應用程序生命周期中都存儲在內存中,由 ASP.NET 管理緩 存,它會在項過期、無效、或內存不足時移除緩存中的項。還可以配置應用程序緩存,以便在移除項時通 知應用程序。所以,你並不知道緩存在什麼時候會失效,即使你已經配置了依賴項。
關於緩存的過期有2種類型:
過期類型 說明 滑動窗口 指定某項自上次被訪問後多長時間過期。 絕對過期 指定某項在設定的時間過期,而不考慮訪問頻率。
可以將緩存中某一項的生存期配置為依賴於其他應用程序元素,如某個文件或數據庫。當緩存項依賴 的元素更改時,ASP.NET 將從緩存中移除該項。