在《他舅網wap流量統計分析平台》開發中為了提高系統的性能,我們利用Cache來保存數據,例如把 用戶的一些權限信息放在Cache中,但這樣做會有些問題,何時清除Cache與數據保持同步,下面我在項目 中使用Cache的心得,與大家分享。
一、利用CacheDependency類
它在命名空間System.Web.Caching中。CacheDependency類會與文件之間建立依附性關系。在文件更改 時,該Cache項會自動移除。
方法:
把用戶權限信息保留成XML文件,當管理員更新數據時,同時更新這個XML文件。
代碼:
//Cahce值為XML文件內容
XmlDocument doc = Cache["user"] as XmlDocument;
if (doc == null)
{
doc = new XmlDocument();
string filePath = Server.MapPath("user.xml");
//建立依賴項
CacheDependency c = new CacheDependency(filePath);
doc.Load(filePath);
//建立依賴關系
Cache.Insert("skin", doc, c
,Cache.NoAbsoluteExpiration
,TimeSpan.FromMinutes(30)
);
}
二、利用SqlCacheDependency類
它也在命名空間System.Web.Caching中,SqlCacheDependency會與數據庫表或SQL Server查詢結果建 立依賴關系,這種方法操作比較復雜。
步聚1:
在Web.Config文件中增加數據庫連接串與Cache配置節點。
<configuration>
<appSettings/>
<connectionStrings>
<add name="connStr" connectionString="server=192.168.1.24;uid=sa;pwd=l23;database=CacheTest;"/>
</connectionStrings>
<system.web>
<caching>
<sqlCacheDependency>
<databases>
<!--節點connectionStringNam的值connStr必須與上面定義的連接串節點name的值相同-->
<add name="entryName" connectionStringName="connStr" pollTime="50000"/>
</databases>
</sqlCacheDependency>
</caching>
</system.web>
</configuration>