熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

Wap流量統計開發中使用Cache心得

2013-11-13 09:59:12  來源: .NET編程 

  在《他舅網wap流量統計分析平台》開發中為了提高系統的性能我們利用Cache來保存數據例如把用戶的一些權限信息放在Cache中但這樣做會有些問題何時清除Cache與數據保持同步下面我在項目中使用Cache的心得與大家分享

  一利用CacheDependency類

  它在命名空間SystemWebCaching中CacheDependency類會與文件之間建立依附性關系在文件更改時該Cache項會自動移除

  方法:

  把用戶權限信息保留成XML文件當管理員更新數據時同時更新這個XML文件

  代碼

  //Cahce值為XML文件內容

  XmlDocument doc = Cache[user] as XmlDocument;

  if (doc == null)

  {

  doc = new XmlDocument();

  string filePath = ServerMapPath(userxml);

  //建立依賴項

  CacheDependency c = new CacheDependency(filePath);

  docLoad(filePath);

  //建立依賴關系

  CacheInsert(skin doc c

  CacheNoAbsoluteExpiration

  TimeSpanFromMinutes()

  );

  }

  二利用SqlCacheDependency類

  它也在命名空間SystemWebCaching中SqlCacheDependency會與數據庫表或SQL Server查詢結果建立依賴關系這種方法操作比較復雜

  步聚:

  在WebConfig文件中增加數據庫連接串與Cache配置節點

  <configuration>

  <appSettings/>

  <connectionStrings>

  <add name=connStr connectionString=server=;uid=sa;pwd=l;database=CacheTest;/>

  </connectionStrings>

  <systemweb>

  <caching>

  <sqlCacheDependency>

  <databases>

  <!節點connectionStringNam的值connStr必須與上面定義的連接串節點name的值相同>

  <add name=entryName connectionStringName=connStr pollTime=/>

  </databases>

  </sqlCacheDependency>

  </caching>

  </systemweb>

  </configuration>

  步聚:

  在Globalasax文件中填加代碼目地是在應用程序端啟用依賴監聽器該方法的參數為數據庫的連接字符串

  void Application_Start(object sender EventArgs e)

  {

  SystemDataSqlClientSqlDependencyStart(ConfigurationManagerConnectionStrings[connStr]ConnectionString);

  }

  void Application_End(object sender EventArgs e)

  {

  SystemDataSqlClientSqlDependencyStop(ConfigurationManagerConnectionStrings[connStr]ConnectionString);

  }

  步聚:

  定義數據庫依賴項

  String  CacheName  =  CacheName ;

  String strconnection = ConfigurationManagerConnectionStrings[connStr]ConnectionString;

  DataTable  table  =  new  DataTable();

  if(Cache[CacheName]  ==  null)

  {

  SqlConnection  conn  =  new  SqlConnection(strconnection);

  SqlCommand  cmd  =  new  SqlCommand( select * from dbouser conn);

  cmdCommandType = CommandTypeText;

  //這時非常重要

  SqlCacheDependency  dep  =  new  SqlCacheDependency(cmd);

  SqlDataAdapter  adp  =  new  SqlDataAdapter(cmd);

  connOpen();

  adpFill(table);

  connClose();

  TimeSpan  ts  =  new  TimeSpan(    );

  //建立依賴

  CacheAdd(CacheName  table  dep  CacheNoAbsoluteExpiration  ts  CacheItemPriorityHigh  null);

  }

  else

  {

  table  =  (DataTable)Cache[CacheName];

  }

  步聚:

  啟用 SQL 緩存依賴項

  運行 Aspnet_regsqlexe文件目錄在C:\WINDOWS\MicrosoftNET\Framework\<你的Framework版本號文件夾>\aspnet_regsqlexe

  輸入命令行aspnet_regsqlexe S <服務器名稱> U <用戶名> P <密碼> ed d 數據庫名 et t 表名

  執行完命令後系統自動會在相應的數據庫中增加了一些存儲過程這樣就全部完成了

  心得

  第一種方法使用簡單方便在本項目中經常使用

  第二種方法對SQL語名限制較嚴格不能帶有Where關鍵字也不能用存儲過程如果您知道解決方法請分享

  轉自他舅平台


From:http://tw.wingwit.com/Article/program/net/201311/12199.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.