最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入分析緩存依賴中cachedependency對(duì)象及周邊小講

 更新時(shí)間:2013年06月05日 15:56:06   作者:  
本篇文章是對(duì)緩存依賴中cachedependency對(duì)象進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下

最近正在學(xué)緩存依賴,現(xiàn)把一些學(xué)習(xí)資料整理如下:
緩存依賴主要提供以下功能:
1.SQL 緩存依賴項(xiàng)可用于應(yīng)用程序緩存和頁(yè)輸出緩存。
2.可在 SQL Server 7.0 及更高版本中使用 SQL 緩存依賴項(xiàng)。
3.可以在網(wǎng)絡(luò)園(一臺(tái)服務(wù)器上存在多個(gè)處理器)或網(wǎng)絡(luò)場(chǎng)(多臺(tái)服務(wù)器運(yùn)行同一應(yīng)用程序)中使用 SQL 緩存依賴項(xiàng)。
4.與 SQL 緩存依賴項(xiàng)關(guān)聯(lián)的數(shù)據(jù)庫(kù)操作比較簡(jiǎn)單,因此不會(huì)給服務(wù)器帶來(lái)很高的處理成本。

現(xiàn)在把與緩存依賴相關(guān)的對(duì)象集合如下,并對(duì)差異性進(jìn)行了一定程度的分析……
緩存依賴主要由3個(gè)核心類來(lái)實(shí)現(xiàn):CacheDependency、AggregateCacheDependency、SqlCacheDependency。CacheDependency 類是 AggregateCacheDependency 類和 SqlCacheDependency 類的父類。

CacheDependency跟蹤緩存依賴項(xiàng),緩存依賴項(xiàng)可以是應(yīng)用程序的 Cache 中的文件、目錄或與其他對(duì)象的鍵,可用于實(shí)現(xiàn)自定義緩存依賴。//對(duì)文件可起作用。

SqlCacheDependency類在所有受支持的 SQL Server 版本 (7.0, 2000, 2005) 上監(jiān)視特定的 SQL Server 數(shù)據(jù)庫(kù)表,以便在該表發(fā)生更改時(shí),自動(dòng)從 Cache 中刪除與該表關(guān)聯(lián)的項(xiàng)。數(shù)據(jù)庫(kù)表發(fā)生更改時(shí),將自動(dòng)刪除緩存項(xiàng),并向 Cache 中添加新版本的項(xiàng)。在使用 SQL Server 2005 數(shù)據(jù)庫(kù)時(shí),SqlCacheDependency 類還支持與 System.Data.SqlClient.SqlDependency 類進(jìn)行集成。使用 SQL Server 2005 的查詢通知機(jī)制來(lái)檢測(cè)使 SQL 查詢結(jié)果無(wú)效的數(shù)據(jù)更改。與 SQL 查詢關(guān)聯(lián)的任何緩存項(xiàng)都將從 System.Web.Caching.Cache 中移除。在使用 SQL Server 2005 時(shí),可以使用 SqlCacheDependency 類向應(yīng)用程序的 Cache 添加依賴于 SQL Server 數(shù)據(jù)庫(kù)表或 SQL 查詢的項(xiàng)。//對(duì)數(shù)據(jù)表的支持

AggregateCacheDependency類監(jiān)視依賴項(xiàng)對(duì)象的集合,以便在任何依賴項(xiàng)對(duì)象更改時(shí),該緩存項(xiàng)都會(huì)自動(dòng)移除。數(shù)組中的對(duì)象可以是CacheDependency或者SqlCacheDependency對(duì)象、從 CacheDependency派生的自定義對(duì)象或這些對(duì)象的任意組合.

AggregateCacheDependency類與CacheDependency類的不同之處在于前者允許您將不同類型的多個(gè)依賴項(xiàng)與單個(gè)緩存項(xiàng)關(guān)聯(lián)。例如,如果您創(chuàng)建一個(gè)從 SQL Server 數(shù)據(jù)庫(kù)表和 XML 文件導(dǎo)入數(shù)據(jù)的頁(yè),則可創(chuàng)建一個(gè)SqlCacheDependency對(duì)象來(lái)表示數(shù)據(jù)庫(kù)表的依賴項(xiàng),以及一個(gè)CacheDependency來(lái)表XML 文件的依賴項(xiàng)??蓜?chuàng)建 AggregateCacheDependency類的一個(gè)實(shí)例,將每個(gè)依賴項(xiàng)添加到該類中,而不是為每個(gè)依賴項(xiàng)調(diào)用 Cache.Insert 方法。然后,可使用單個(gè)Insert 調(diào)用使該頁(yè)依賴于 AggregateCacheDependency實(shí)例。

復(fù)制代碼 代碼如下:

其中,本章主要講述CacheDependency的用法。
CacheDependency有幾中重載,各作用如下。
//假設(shè)緩存的來(lái)源文件是當(dāng)前目錄下的data.xml文件
//緩存依賴的文件路徑
    CacheDependency mydep = new CacheDependency("data.xml");
//緩存依賴的文件可以有多個(gè)
    CacheDependency mydep1=new CacheDependency(new string []{"data.xml","data1.xml"});
//檢查緩存依賴更改的依據(jù)時(shí)間
    CacheDependency mydep2 = new CacheDependency("data.xml", DateTime.Now);
//檢查多個(gè)依賴文件更改的依據(jù)時(shí)間
    CacheDependency mydep3 = new CacheDependency(new string[] { "data.xml", "data1.xml" }, DateTime.Now);
//檢查依賴多個(gè)文件,也依賴多個(gè)緩存鍵值
    CacheDependency mydep4 = new CacheDependency(new string[] { "data.xml", "data1.xml" },new string[] { "Category", "Category1" });
//關(guān)聯(lián)依賴,還可以依賴于另一個(gè)文件緩存依賴
    CacheDependency mydep5 = new CacheDependency(new string[] { "data.xml", "data1.xml" },new string[] { "Category", "Category1" }, mydep);
//文件和鍵值上次修改的依據(jù)時(shí)間
    CacheDependency mydep6 = new CacheDependency(new string[] { "data.xml", "data1.xml" },new string[] { "Category", "Category1" }, DateTime.Now);
//文件、另一個(gè)緩存依賴和鍵值上次修改的依據(jù)時(shí)間
    CacheDependency mydep6 = new CacheDependency(new string[] { "data.xml", "data1.xml" },new string[] { "Category", "Category1" }, mydep,DateTime.Now);

復(fù)制代碼 代碼如下:

public partial class CacheDependencyPage : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            GetData();
        }
    }
    private void GetData()
    {
        DataTable tableData = new DataTable();
        if (Cache["data"] == null)//用于引用該項(xiàng)的緩存鍵。如果緩存改變,則true;詳情百度c#的Cache對(duì)象!
        {
            DataSet ds = new DataSet();
            string filePath = Server.MapPath("~/App_Data/XMLFile.xml");//服務(wù)器數(shù)據(jù)絕對(duì)地址
            ds.ReadXml(filePath);//讀取文件內(nèi)的數(shù)據(jù),保存在ds里
            tableData = ds.Tables[0];
            CacheDependency cdy = new CacheDependency(filePath,DateTime.Now);
            Cache.Insert("data", tableData, cdy);//通過(guò)使用 Insert(重載Insert方法)方法將項(xiàng)添加到緩存中
            //if (cdy.HasChanged)
            //{
                System.Diagnostics.Debug.WriteLine("Xml已變更");
            //}
        }
        else
        {
            tableData = (DataTable)Cache["data"];//通過(guò)指定其鍵和值將項(xiàng)添加到緩存中
        }
        grvCS.DataSource = tableData;
        grvCS.DataBind();

        //DataSet mds = new DataSet();//驗(yàn)證數(shù)據(jù)綁定用,因?yàn)閤ml層次結(jié)構(gòu)的問(wèn)題導(dǎo)致了數(shù)據(jù)綁定失敗;
        //mds.ReadXml(Server.MapPath("~/App_Data/XMLFile.xml"));
        //grvCS.DataSource = mds;
        //grvCS.DataBind();
    }
}


其中
1.記得在view頁(yè)面為gridview綁定相應(yīng)的數(shù)據(jù)字段。
2.注意xml的格式,作者本人在實(shí)驗(yàn)的時(shí)候就應(yīng)Xml數(shù)據(jù)格式的問(wèn)題導(dǎo)致讀取的數(shù)據(jù)綁定失敗。

相關(guān)文章

最新評(píng)論

黔江区| 吉安市| 宝兴县| 白朗县| 房产| 庐江县| 蒙城县| 玉屏| 内江市| 云和县| 白银市| 宜君县| 旺苍县| 抚远县| 金堂县| 焉耆| 舟山市| 青铜峡市| 崇明县| 南召县| 蓝山县| 陇川县| 华宁县| 探索| 三河市| 汶上县| 浪卡子县| 六枝特区| 大宁县| 横峰县| 宜君县| 门源| 濮阳县| 台江县| 新巴尔虎右旗| 陈巴尔虎旗| 龙里县| 米脂县| 扎兰屯市| 滦南县| 剑川县|