自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用Cache提高ASP.NET性能

開(kāi)發(fā) 后端
本文介紹使用Cache提高ASP.NET性能,ASP.NET作為基于.Net Framework的WEB開(kāi)發(fā)技術(shù),它也享用著.Net Framework的優(yōu)越性。

使用Cache提高ASP.NET性能

雖然現(xiàn)在已經(jīng)是寬帶時(shí)代,小貓已經(jīng)離我們漸漸遠(yuǎn)去,可作為WEB應(yīng)用開(kāi)發(fā)者來(lái)說(shuō),我們?nèi)匀挥胸?zé)任和義務(wù)不斷地通過(guò)技術(shù)手段來(lái)優(yōu)化WEB應(yīng)用性能,讓用戶瀏覽時(shí)少一些等待,多一些爽快。

所幸的是,ASP.NET作為基于.Net Framework的WEB開(kāi)發(fā)技術(shù),它也享用著.Net Framework的優(yōu)越性,.Net Framework為我們提供了良好的Cache技術(shù),使我們能開(kāi)發(fā)出速度更快、用戶體驗(yàn)更好的WEB應(yīng)用。命名空間System.Web.Caching提供了Cache類,其Cache的有效性依賴分以下三種情況:
1.時(shí)間點(diǎn)(指定時(shí)間點(diǎn)內(nèi)有效);
2.KEY值(KEY值作Cache項(xiàng)標(biāo)識(shí));
3.文件或目錄(指定文件或目錄變更,則原Cache項(xiàng)不可用);

下面我就結(jié)合實(shí)際開(kāi)發(fā)的應(yīng)用跟大家分享一下使用Cache提高ASP.NET性能。

我們?cè)陂_(kāi)發(fā)中常常會(huì)遇到讀取記錄列表(例如最近更新的新聞列表Top N)、記錄本身(例如一條新聞),用戶訪問(wèn)的時(shí)候,這樣的信息是否每次都要重復(fù)從數(shù)據(jù)庫(kù)中讀取呢?聰明的你可能知道,這完全是沒(méi)必要的。

我們?yōu)榱朔奖闾幚?,不防設(shè)計(jì)一個(gè)SiteCache類(借鑒了CS中的CSCache.cs),并提供若干靜態(tài)方法,來(lái)負(fù)責(zé)處理Cache項(xiàng)的添加和刪除。下面給出類圖:

Cache項(xiàng)的添加和刪除


其實(shí)該類主要就是利用前文所提及的關(guān)于Cache依賴項(xiàng)的第一點(diǎn)與第二點(diǎn)的特性來(lái)維護(hù)我們自己的Cache項(xiàng)。有了SiteCache類,接下來(lái)看看如何使用它。還是以讀取新聞TonN列表為例:

  1. public static RecordSet GetNewsSetTopN(string classCode,int topN,
    SortPostsBy orderBy, SortOrder sortOrder, string language)  
  2. {  
  3. string cacheKey = string.Format("NewsSetTopN-LG:{0}:CC:{1}:TN:{2}:OB:{3}:SO:{4}", 
    language,classCode,topN.ToString(), orderBy.ToString(),sortOrder.ToString());  
  4.  
  5. //從上下文中讀緩存項(xiàng)  
  6. RecordSet newsSet = HttpContext.Current.Items[cacheKey] as RecordSet;  
  7. if (newsSet == null)  
  8. {  
  9. //從HttpRuntime.Cache讀緩存項(xiàng)  
  10. newsSet = SiteCache.Get(cacheKey) as RecordSet;  
  11. if (newsSet == null)  
  12. {  
  13. //直接從數(shù)據(jù)庫(kù)從讀取  
  14. CommonDataProvider dp=CommonDataProvider.Instance();  
  15. newsSet =dp.GetNewsSetTopN(language,classCode,topN,orderBy,sortOrder);  
  16. //并將結(jié)果緩存到HttpRuntime.Cache中  
  17. SiteCache.Insert(cacheKey, newsSet, 60, CacheItemPriority.Normal);  
  18. }  
  19. }  
  20. return newsSet;  

這樣在5分鐘內(nèi)就不用重復(fù)訪問(wèn)數(shù)據(jù)庫(kù)了來(lái)讀該列表了,當(dāng)然,也有人會(huì)問(wèn),如果在這5分鐘內(nèi)某條新聞刪除了或修改了怎么辦,沒(méi)關(guān)系,我們?cè)趧h除或修改時(shí)可以根據(jù)Cache KEY來(lái)強(qiáng)制刪除該Cache項(xiàng),當(dāng)然,如果你覺(jué)得你對(duì)列表的時(shí)效性不是特別在意,你可以不強(qiáng)制刪除該Cache項(xiàng),讓Cache項(xiàng)定義的時(shí)間點(diǎn)自動(dòng)失效。當(dāng)然,最好還是提供一個(gè)方法按匹配模式項(xiàng)來(lái)強(qiáng)行刪除Cache項(xiàng)就可以了,例如:

  1. /// <summary> 
  2. /// 刪除匹配的NewsSetTopN列表的Cache項(xiàng)  
  3. /// </summary> 
  4. public static void ClearNewsSetTopNCache(string language,
    string classCode,int topN)  
  5. {  
  6. string cacheKey = string.Format("NewsSetTopN-LG:{0}:CC:{1}:TN:{2}",
    language,classCode,topN.ToString());  
  7. SiteCache.RemoveByPattern(cacheKey);  

發(fā)布新聞后調(diào)用靜態(tài)方法ClearNewsSetTopNCache()強(qiáng)行清除原來(lái)的TopN緩存項(xiàng),例如:

  1. /// <summary> 
  2. /// 發(fā)布(新建)新聞  
  3. /// </summary> 
  4. /// <param name="post">新聞實(shí)例</param> 
  5. /// <returns>返回狀態(tài)</returns> 
  6. public static int Create(News post)  
  7. {  
  8. int status;  
  9. CommonDataProvider dp=CommonDataProvider.Instance();  
  10. dp.CreateUpdateDeleteNews(post, DataAction.Create, out status);  
  11. //強(qiáng)制清除匹配的緩存項(xiàng)  
  12. ClearNewsSetTopNCache (post.Language, post.ClassCode,Globals.
    GetSiteSetting.NewsListTopN);  
  13. return status;  

以上介紹使用Cache提高ASP.NET性能。

【編輯推薦】

  1. ASP.NET開(kāi)發(fā)技巧之Theme功能淺析
  2. 詳解ASP.NET動(dòng)態(tài)編譯
  3. Apache支持ASP.NET方法淺析
  4. 淺談ASP.NET服務(wù)器標(biāo)準(zhǔn)控件
  5. ASP.NET中SQL Server數(shù)據(jù)庫(kù)備份恢復(fù)淺析
責(zé)任編輯:佚名 來(lái)源: 51CTO.com
相關(guān)推薦

2011-10-14 10:37:54

ASP.NET

2009-07-20 17:07:30

提高ASP.NET性能

2012-07-03 13:55:00

ASP.NET

2010-05-07 08:59:50

ASP.NET

2009-07-29 11:33:14

ASP.NET技巧ASP.NET應(yīng)用程序

2024-06-11 09:00:00

異步編程代碼

2011-07-07 09:03:12

ASP.NET

2009-08-03 10:07:20

ASP.NET Ses

2009-08-10 14:55:43

ASP.NET htt

2009-07-22 17:45:35

ASP.NET教程

2009-07-23 15:44:39

ASP.NET MVC

2009-07-27 09:45:14

ASP.NET Dro

2009-08-03 14:22:33

什么是ASP.NET

2009-07-28 17:17:19

ASP.NET概述

2024-12-05 08:14:41

2009-07-24 16:40:14

ASP.NET軟件開(kāi)發(fā)

2009-08-13 15:49:18

ASP.NET性能優(yōu)化

2011-10-19 09:41:15

ASP.NET性能優(yōu)化

2024-09-10 08:13:16

Asp項(xiàng)目輕量級(jí)

2009-08-13 16:22:18

ASP.NET性能優(yōu)化
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)