日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產(chǎn)品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
ASP.NET緩存數(shù)據(jù)技巧三則

ASP.NET緩存數(shù)據(jù)技巧:訪問緩存的值

站在用戶的角度思考問題,與客戶深入溝通,找到阜康網(wǎng)站設計與阜康網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設計與互聯(lián)網(wǎng)技術結合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站建設、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、域名申請、虛擬主機、企業(yè)郵箱。業(yè)務覆蓋阜康地區(qū)。

由于緩存中所存儲的信息為易失信息,即該信息可能由 ASP.NET 移除,因此建議先確定該項是否在緩存中。如果不在,則應將它重新添加到緩存中,然后檢索該項。

 
 
 
  1. string cachedString;  
  2. if (Cache["CacheItem"] != null)  
  3. {  
  4.     cachedString = (string)Cache["CacheItem"];  
  5. }  
  6. else 
  7. {  
  8.  
  9.      //緩存不存在時  
  10.     Cache.Insert("CacheItem""Hello, World.")  
  11.     cachedString = (string)Cache["CacheItem"];  
  12. }  

ASP.NET緩存數(shù)據(jù)技巧:刪除緩存項

由于以下任一原因,緩存中的數(shù)據(jù)可能會自動移除:緩存已滿、該項已過期、依賴項發(fā)生更改。注意:如果調(diào)用 Insert 方法,并向緩存中添加與現(xiàn)有項同名的項,則將從緩存中刪除該舊項。顯示刪除緩存的值:

 
 
 
  1. Cache.Remove("MyCacheKey"); 

ASP.NET緩存數(shù)據(jù)技巧:刪除緩存項時通知應用程序

從緩存中移除項時通知應用程序,可能非常有用。例如,可能具有一個緩存的報告,創(chuàng)建該報告需花費大量的時間進行處理。當該報告從緩存中移除時,希望重新生成該報告,并立即將其置于緩存中,以便下次請求該報告時,用戶不必等待對此報告進行處理。

ASP.NET 提供了CacheItemRemovedCallback 委托,在從緩存中移除項時能夠發(fā)出通知。還提供 CacheItemRemovedReason 枚舉,用于指定移除緩存項的原因。舉例:假設有一個 ReportManager 對象,該對象具有兩種方法,即 GetReport 和 CacheReport。GetReport 報告方法檢查緩存以查看報告是否已緩存;如果沒有,該方法將重新生成報告并將其緩存。CacheReport 方法具有與 CacheItemRemovedCallback 委托相同的函數(shù)簽名;從緩存中移除報告時,ASP.NET 會調(diào)用 CacheReport 方法,然后將報告重新添加到緩存中。

1)創(chuàng)建一個 ASP.NET 網(wǎng)頁,該網(wǎng)頁將調(diào)用類中用于將項添加到緩存中的方法。

 
 
 
  1. protected void Page_Load(object sender, EventArgs e)  
  2. {  
  3.     this.Label1.Text = ReportManager.GetReport();  

2)創(chuàng)建用于在從緩存中刪除項時處理通知的完整類ReportManager。

 
 
 
  1. using System;  
  2. using System.Web;  
  3. using System.Web.Caching;  
  4. public static class ReportManager  
  5. {  
  6.     private static bool _reportRemovedFromCache = false;  
  7.       
  8.     static ReportManager() { }  
  9.       
  10.     //從緩存中獲取項  
  11.     public static String GetReport()  
  12.     {  
  13.         lock (typeof(ReportManager))  
  14.         {  
  15.             if (HttpContext.Current.Cache["MyReport"] != null)  
  16.             {    //存在MyReport緩存項,返回緩存值  
  17.                 return (string)HttpRuntime.Cache["MyReport"];  
  18.             }  
  19.             else 
  20.             {   //MyReport緩存項不存在,則創(chuàng)建MyReport緩存項  
  21.                 CacheReport();  
  22.                 return (string)HttpRuntime.Cache["MyReport"];  
  23.             }  
  24.         }  
  25.     }  
  26.  
  27.     //將項以 MyReport 的名稱添加到緩存中,并將該項設置為在添加到緩存中后一分鐘過期。  
  28.     //并且該方法注冊 ReportRemoveCallback 方法,以便在從緩存中刪除項時進行調(diào)用。  
  29.     public static void CacheReport()  
  30.     {  
  31.         lock (typeof(ReportManager))  
  32.         {  
  33.             HttpContext.Current.Cache.Add("MyReport",  
  34.                 CreateReport(), null, DateTime.MaxValue,  
  35.                 new TimeSpan(0, 1, 0),   
  36.                 System.Web.Caching.CacheItemPriority.Default,  
  37.                 ReportRemovedCallback);  
  38.         }  
  39.     }  
  40.  
  41.     //創(chuàng)建報告,該報告時MyReport緩存項的值  
  42.     private static string CreateReport()  
  43.     {  
  44.         System.Text.StringBuilder myReport =   
  45.             new System.Text.StringBuilder();  
  46.         myReport.Append("Sales Report< br />");  
  47.         myReport.Append("2005 Q2 Figures< br />");  
  48.         myReport.Append("Sales NE Region - $2 million< br />");  
  49.         myReport.Append("Sales NW Region - $4.5 million< br />");  
  50.         myReport.Append("Report Generated: " + DateTime.Now.ToString()   
  51.             + "< br />");  
  52.         myReport.Append("Report Removed From Cache: " +   
  53.             _reportRemovedFromCache.ToString());  
  54.         return myReport.ToString();  
  55.     }  
  56.  
  57.     //當從緩存中刪除項時調(diào)用該方法。  
  58.     public static void ReportRemovedCallback(String key, object value,   
  59.         CacheItemRemovedReason removedReason)  
  60.     {  
  61.         _reportRemovedFromCache = true;  
  62.         CacheReport();  
  63.     }  
  64. }  

不應在 ASP.NET 頁中實現(xiàn)回調(diào)處理程序,因為在從緩存中刪除項之前該頁可能已被釋放,因此用于處理回調(diào)的方法將不可用,應該在非ASP.NET的程序集中實現(xiàn)回調(diào)處理程序。為了確保從緩存中刪除項時處理回調(diào)的方法仍然存在,請使用該方法的靜態(tài)類。但是,靜態(tài)類的缺點是需要保證所有靜態(tài)方法都是線程安全的,所以使用lock關鍵字。

本文來自菩提屋:《緩存應用程序數(shù)據(jù)(二)》

【編輯推薦】

  1. ASP.NET緩存數(shù)據(jù)添加方法一覽
  2. ASP.NET緩存機制基礎概念
  3. 再談ASP.NET緩存機制:開發(fā)效率與優(yōu)化的平衡
  4. .NET分布式緩存之Memcached執(zhí)行速度檢測
  5. 如何避免ASP.NET緩存占用系統(tǒng)資源

分享名稱:ASP.NET緩存數(shù)據(jù)技巧三則
本文鏈接:http://www.5511xx.com/article/djpjepg.html