Asp.net的Cache緩衝依賴心得

來源:互聯網
上載者:User

我個人的理解,Cache緩衝依賴就是為了實現該緩衝能與被緩衝的檔案同步修改,例如一個TXT文檔被Cache緩衝,當修改該文檔的時候,能實現Cache緩衝也同步修改成已修改過的文檔的內容。

以下為一個例子;

/// <summary>
/// Cache快取資料的關鍵字Key
/// </summary>
private const string DATAFILENAME = "data/data.txt";
private static int count = 1;

    protected void Page_Load(object sender, EventArgs e)
    {
   if(!Page.IsPostBack)
   {
    CacheFileData(DATAFILENAME);
   }
    }

private void CacheFileData(string filename)
{   ///判斷檔案名稱是否為空白
   if(string.IsNullOrEmpty(filename) == true) return;
   ///擷取檔案的實體路徑
   string fullPath = Server.MapPath(filename);
   ///讀取檔案資料
   StreamReader reader = new StreamReader(fullPath,System.Text.Encoding.Default);
   string content = reader.ReadToEnd();
   reader.Close();
   ///快取檔案的資料
   AddData(fullPath,(object)content);
   ///顯示載入資料的時間
   lbCacheCount.Text = "第 " + (count++).ToString() + " 次快取資料的時間:" + DateTime.Now.ToString();
}

private void AddData(string value,object data)
{   ///建立緩衝依賴
   CacheDependency cdep = new CacheDependency(value);
   ///建立刪除資料的委託
   CacheItemRemovedCallback remove = new CacheItemRemovedCallback(RemoveData);
   ///添加資料到Cache中,其中的幾個參數定義了使用哪個緩衝依賴,和當緩衝依賴執行時刪除資料時的回呼函數即:RemoveData()
   Cache.Add(DATAFILENAME,data,cdep,Cache.NoAbsoluteExpiration,Cache.NoSlidingExpiration,CacheItemPriority.Normal,remove);
}

private void RemoveData(string value,object data,CacheItemRemovedReason reason)
{   ///如果緩衝依賴的被改變,或者到期,則重新快取資料
   if(reason == CacheItemRemovedReason.DependencyChanged || reason == CacheItemRemovedReason.Expired)
   {   ///延時0.5秒
    System.Threading.Thread.Sleep(500);
    ///重新快取資料,即讀取新資料
    CacheFileData(value);
   }
   else
   {   ///儲存原來的資料不變
    AddData(value,data);
   }
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.