頁面數據緩存

  查找更多的相關主題    
頁面數據緩存

ASP.NET提供了一個相當出色的緩存引擎機制,它允許頁面保存和索引HTTP請求所要求的各種各樣的對象。ASP.NET的緩存對各個應用來說是私有的,是存儲各種對象的存儲器。緩存的生存週期取決於應用的生存週期,也就是說,當應用重新啓動時,緩存實際上也已重建。 緩存提供了一個簡單的字典接口,以便於開發者能夠輕而易舉放置對象到緩存中,並在以後使用。最簡單的情況下,放置一個對象到緩存中,就如同對字典增加一個條目。 例如: Cache(“myKey”)=MyValue 即是把MyValue放入緩存中一個叫myKey的緩存對象中,當需要引用myKey值時,可以採用下面的使用方式: myValue1=Cache(“myKey”) if myValue1 <> Null then ‘非空時的動作 … end if

 asp.net提供了三種緩存替換的策略: 1.“腐爛搜索”(Scavenging) 比較類似於“最近最少使用”替換原則,當內存變得比教緊張時,緩存機制會找出最不常用和最不重要的對象,把它從內存中移出,以減輕系統壓力。爲控制“腐爛搜索”的具體行爲,編程者必須在插入緩存對象時,指明插入它的耗費和多少時間內它必須被存取一次才能繼續留在緩存中,以供替換時進行決擇。 2.“到期控制”(Expiration) 編程者可以指定緩存對象的生存週期,這種指定的時間可以是絕對的也可以是相對的。例如絕對的時間(下午6:00到期),相對時間(該對象距最近一次存取它的時間滿10分鐘即到期)。當一個緩存對象到期後,它將從緩衝內存中移出,此時對該對象的索引將得到null值,除非又重新插入該對象。 3.“文件和鍵值依賴” 從外部文件或者是其他緩存鍵值是否改變,來決定本身鍵值是否有效。如果依賴發生改變,緩存對象將變得不可使用,並從緩存中移動出來。試想這樣一種情況,應用從一個XML文件中讀出金融信息,而該文件又被定期地修改。應用的作用是利用從該文件讀出的信息構造一個圖形對象以表示銷售的情況。當應用讀入文件時,它把數據插入緩存中,並記錄下文件的依賴關係。當文件發生修改時,應用使開始產生的緩存對象無效並從內存中移出已經無用的數據,此後應用重新讀入文件的數據,再把更新後的數據放入緩存,這樣就完成了信息的更新,並返回給最終用戶。 6.2.2 實例 例子: 從一個XML中讀出用戶信息並顯示在頁面上,頁面提供了兩個按鈕,一個爲增加用戶,一個爲刷新。我們在內存中建立了一個緩存對象“DataCache5”,它與客戶信息文件”custom1.xml”建立了依賴關係。當custom1.xml文件未發生變化時,我們按下“刷新”按鈕,可以看到信息是從緩存中讀出的;當我們輸入客戶相應的資料,增加了一個客戶以後,再按下“刷新“按鈕後,我們可以看到客戶信息變成了從文件讀出。 1.ASPX源程序(performance/FormDataCache.aspx): <!-- 文件名:FormDataCache.aspx --> <%@ Import Namespace="System.IO" %> <%@ Import Namespace="System.Data" %> <html> <script language="VB" runat="server"> sub LoadData1 '當緩存對象DataCache5有效時,從緩存中讀出客戶信息;無效時,從文件讀出信息 dim dv1 as DataView  dv1=Cache("DataCache5")  if dv1 = Nothing  dim ds as DataSet  dim fs as FileStream  dim sr as StreamReader

 ds=New DataSet  fs=New FileStream(Server.MapPath("custom1.xml"),FileMode.Open,FileAccess.Read)  sr=New StreamReader(fs)  ds.ReadXml(sr)  fs.Close()  dv1=new DataView(ds.Tables(0))  Cache.Insert("DataCache5",dv1,New cachedependency(Server.MapPath("custom1.xml")))  lblMsg.text="數據從文件中讀出..."  Else  lblmsg.text="數據從緩存中讀出..."  end if '綁定到DataGrid1對象  DataGrid1.datasource = dv1  DataGrid1.databind() end sub sub Page_Load(s as object,e as eventargs) '加載頁面時,從文件中讀出客戶信息  if Not IsPostBack  LoadData1()  end if end sub sub AddBtn_Click(s as object,e as eventargs) '增加一個客戶信息到文件中 dim FS as FileStream dim Reader as StreamReader dim DS as DataSet dim dr1 as DataRow dim tw1 as TextWriter  if Not Page.IsValid  lblMsg.text="還有域未曾填充..."  else  DS=New DataSet()  FS=New FileStream(Server.mappath("custom1.xml"),FileMode.Open,FileAccess.Read,FileShare.ReadWrite)  Reader=New StreamReader(FS)  DS.readxml(Reader)         FS.Close()  dr1=DS.tables(0).newrow()      dr1("CustName")=txtName.text  dr1("CustIdno")=txtIdno.text  dr1("CustCard")=txtCard.text  DS.tables(0).rows.add(dr1)               FS=New FileStream(Server.MapPath("custom1.xml"),FileMode.Create,FileAccess.ReadWrite,FileShare.ReadWrite)  tw1=New StreamWriter(FS)  tw1=textwriter.synchronized(tw1)  DS.writexml(tw1)  tw1.close()  LoadData1()  end if end sub sub RefreshBtn_Click(s as object,e as eventargs)  LoadData1() end sub </script> <head> <title> 數據緩衝實驗 </title> </head> <body> <center> <form runat=server> <h2>XML文件緩存測試</h2> <ASP:DataGrid id="DataGrid1" runat="server"         Width="600"         BorderColor="black"         ShowFooter="false"         CellPadding=3         CellSpacing="0"         Font-Name="Verdana"         Font-Size="8pt"           /> <hr> <h3>添加一個客戶信息</h3> <table> <tr> <td>姓    名:</td> <td><ASP:textbox id=txtName runat=server /></td> <td><ASP:RequiredFieldValidator ControlToValidate="txtName" Display="static" ErrorMessage="*" runat=server /> </td> </tr> <tr> <td>身份證號:</td> <td><ASP:textbox id=txtIdno runat=server /></td> <td><ASP:RequiredFieldValidator ControlToValidate="txtIdno" Display="static" ErrorMessage="*" runat=server /> </td> </tr> <tr> <td>信用卡號:</td> <td><ASP:textbox id=txtCard runat=server /></td> <td><ASP:RequiredFieldValidator ControlToValidate="txtCard" Display="static" ErrorMessage="*" runat=server /> </td> </tr> </table> <p> <asp:button text="增加" οnclick="AddBtn_Click" runat=server /> <asp:button text="刷新" οnclick="RefreshBtn_Click" runat=server /> <p><p><p> <asp:label id=lblMsg runat=server /> </form> </center> </body> </html>

  查找更多的相關主題    
頁面數據緩存
http://www.yuzi.net   2006-5-22 15:03:55  

6.2.1 基本概念 ASP.NET提供了一個相當出色的緩存引擎機制,它允許頁面保存和索引HTTP請求所要求的各種各樣的對象。ASP.NET的緩存對各個應用來說是私有的,是存儲各種對象的存儲器。緩存的生存週期取決於應用的生存週期,也就是說,當應用重新啓動時,緩存實際上也已重建。 緩存提供了一個簡單的字典接口,以便於開發者能夠輕而易舉放置對象到緩存中,並在以後使用。最簡單的情況下,放置一個對象到緩存中,就如同對字典增加一個條目。 例如: Cache(“myKey”)=MyValue 即是把MyValue放入緩存中一個叫myKey的緩存對象中,當需要引用myKey值時,可以採用下面的使用方式: myValue1=Cache(“myKey”) if myValue1 <> Null then ‘非空時的動作 … end if

 asp.net提供了三種緩存替換的策略: 1.“腐爛搜索”(Scavenging) 比較類似於“最近最少使用”替換原則,當內存變得比教緊張時,緩存機制會找出最不常用和最不重要的對象,把它從內存中移出,以減輕系統壓力。爲控制“腐爛搜索”的具體行爲,編程者必須在插入緩存對象時,指明插入它的耗費和多少時間內它必須被存取一次才能繼續留在緩存中,以供替換時進行決擇。 2.“到期控制”(Expiration) 編程者可以指定緩存對象的生存週期,這種指定的時間可以是絕對的也可以是相對的。例如絕對的時間(下午6:00到期),相對時間(該對象距最近一次存取它的時間滿10分鐘即到期)。當一個緩存對象到期後,它將從緩衝內存中移出,此時對該對象的索引將得到null值,除非又重新插入該對象。 3.“文件和鍵值依賴” 從外部文件或者是其他緩存鍵值是否改變,來決定本身鍵值是否有效。如果依賴發生改變,緩存對象將變得不可使用,並從緩存中移動出來。試想這樣一種情況,應用從一個XML文件中讀出金融信息,而該文件又被定期地修改。應用的作用是利用從該文件讀出的信息構造一個圖形對象以表示銷售的情況。當應用讀入文件時,它把數據插入緩存中,並記錄下文件的依賴關係。當文件發生修改時,應用使開始產生的緩存對象無效並從內存中移出已經無用的數據,此後應用重新讀入文件的數據,再把更新後的數據放入緩存,這樣就完成了信息的更新,並返回給最終用戶。 6.2.2 實例 例子: 從一個XML中讀出用戶信息並顯示在頁面上,頁面提供了兩個按鈕,一個爲增加用戶,一個爲刷新。我們在內存中建立了一個緩存對象“DataCache5”,它與客戶信息文件”custom1.xml”建立了依賴關係。當custom1.xml文件未發生變化時,我們按下“刷新”按鈕,可以看到信息是從緩存中讀出的;當我們輸入客戶相應的資料,增加了一個客戶以後,再按下“刷新“按鈕後,我們可以看到客戶信息變成了從文件讀出。 1.ASPX源程序(performance/FormDataCache.aspx): <!-- 文件名:FormDataCache.aspx --> <%@ Import Namespace="System.IO" %> <%@ Import Namespace="System.Data" %> <html> <script language="VB" runat="server"> sub LoadData1 '當緩存對象DataCache5有效時,從緩存中讀出客戶信息;無效時,從文件讀出信息 dim dv1 as DataView  dv1=Cache("DataCache5")  if dv1 = Nothing  dim ds as DataSet  dim fs as FileStream  dim sr as StreamReader

 ds=New DataSet  fs=New FileStream(Server.MapPath("custom1.xml"),FileMode.Open,FileAccess.Read)  sr=New StreamReader(fs)  ds.ReadXml(sr)  fs.Close()  dv1=new DataView(ds.Tables(0))  Cache.Insert("DataCache5",dv1,New cachedependency(Server.MapPath("custom1.xml")))  lblMsg.text="數據從文件中讀出..."  Else  lblmsg.text="數據從緩存中讀出..."  end if '綁定到DataGrid1對象  DataGrid1.datasource = dv1  DataGrid1.databind() end sub sub Page_Load(s as object,e as eventargs) '加載頁面時,從文件中讀出客戶信息  if Not IsPostBack  LoadData1()  end if end sub sub AddBtn_Click(s as object,e as eventargs) '增加一個客戶信息到文件中 dim FS as FileStream dim Reader as StreamReader dim DS as DataSet dim dr1 as DataRow dim tw1 as TextWriter  if Not Page.IsValid  lblMsg.text="還有域未曾填充..."  else  DS=New DataSet()  FS=New FileStream(Server.mappath("custom1.xml"),FileMode.Open,FileAccess.Read,FileShare.ReadWrite)  Reader=New StreamReader(FS)  DS.readxml(Reader)         FS.Close()  dr1=DS.tables(0).newrow()      dr1("CustName")=txtName.text  dr1("CustIdno")=txtIdno.text  dr1("CustCard")=txtCard.text  DS.tables(0).rows.add(dr1)               FS=New FileStream(Server.MapPath("custom1.xml"),FileMode.Create,FileAccess.ReadWrite,FileShare.ReadWrite)  tw1=New StreamWriter(FS)  tw1=textwriter.synchronized(tw1)  DS.writexml(tw1)  tw1.close()  LoadData1()  end if end sub sub RefreshBtn_Click(s as object,e as eventargs)  LoadData1() end sub </script> <head> <title> 數據緩衝實驗 </title> </head> <body> <center> <form runat=server> <h2>XML文件緩存測試</h2> <ASP:DataGrid id="DataGrid1" runat="server"         Width="600"         BorderColor="black"         ShowFooter="false"         CellPadding=3         CellSpacing="0"         Font-Name="Verdana"         Font-Size="8pt"           /> <hr> <h3>添加一個客戶信息</h3> <table> <tr> <td>姓    名:</td> <td><ASP:textbox id=txtName runat=server /></td> <td><ASP:RequiredFieldValidator ControlToValidate="txtName" Display="static" ErrorMessage="*" runat=server /> </td> </tr> <tr> <td>身份證號:</td> <td><ASP:textbox id=txtIdno runat=server /></td> <td><ASP:RequiredFieldValidator ControlToValidate="txtIdno" Display="static" ErrorMessage="*" runat=server /> </td> </tr> <tr> <td>信用卡號:</td> <td><ASP:textbox id=txtCard runat=server /></td> <td><ASP:RequiredFieldValidator ControlToValidate="txtCard" Display="static" ErrorMessage="*" runat=server /> </td> </tr> </table> <p> <asp:button text="增加" οnclick="AddBtn_Click" runat=server /> <asp:button text="刷新" οnclick="RefreshBtn_Click" runat=server /> <p><p><p> <asp:label id=lblMsg runat=server /> </form> </center> </body> </html>

  查找更多的相關主題    
頁面數據緩存
http://www.yuzi.net   2006-5-22 15:03:55  

6.2.1 基本概念 ASP.NET提供了一個相當出色的緩存引擎機制,它允許頁面保存和索引HTTP請求所要求的各種各樣的對象。ASP.NET的緩存對各個應用來說是私有的,是存儲各種對象的存儲器。緩存的生存週期取決於應用的生存週期,也就是說,當應用重新啓動時,緩存實際上也已重建。 緩存提供了一個簡單的字典接口,以便於開發者能夠輕而易舉放置對象到緩存中,並在以後使用。最簡單的情況下,放置一個對象到緩存中,就如同對字典增加一個條目。 例如: Cache(“myKey”)=MyValue 即是把MyValue放入緩存中一個叫myKey的緩存對象中,當需要引用myKey值時,可以採用下面的使用方式: myValue1=Cache(“myKey”) if myValue1 <> Null then ‘非空時的動作 … end if

 asp.net提供了三種緩存替換的策略: 1.“腐爛搜索”(Scavenging) 比較類似於“最近最少使用”替換原則,當內存變得比教緊張時,緩存機制會找出最不常用和最不重要的對象,把它從內存中移出,以減輕系統壓力。爲控制“腐爛搜索”的具體行爲,編程者必須在插入緩存對象時,指明插入它的耗費和多少時間內它必須被存取一次才能繼續留在緩存中,以供替換時進行決擇。 2.“到期控制”(Expiration) 編程者可以指定緩存對象的生存週期,這種指定的時間可以是絕對的也可以是相對的。例如絕對的時間(下午6:00到期),相對時間(該對象距最近一次存取它的時間滿10分鐘即到期)。當一個緩存對象到期後,它將從緩衝內存中移出,此時對該對象的索引將得到null值,除非又重新插入該對象。 3.“文件和鍵值依賴” 從外部文件或者是其他緩存鍵值是否改變,來決定本身鍵值是否有效。如果依賴發生改變,緩存對象將變得不可使用,並從緩存中移動出來。試想這樣一種情況,應用從一個XML文件中讀出金融信息,而該文件又被定期地修改。應用的作用是利用從該文件讀出的信息構造一個圖形對象以表示銷售的情況。當應用讀入文件時,它把數據插入緩存中,並記錄下文件的依賴關係。當文件發生修改時,應用使開始產生的緩存對象無效並從內存中移出已經無用的數據,此後應用重新讀入文件的數據,再把更新後的數據放入緩存,這樣就完成了信息的更新,並返回給最終用戶。 6.2.2 實例 例子: 從一個XML中讀出用戶信息並顯示在頁面上,頁面提供了兩個按鈕,一個爲增加用戶,一個爲刷新。我們在內存中建立了一個緩存對象“DataCache5”,它與客戶信息文件”custom1.xml”建立了依賴關係。當custom1.xml文件未發生變化時,我們按下“刷新”按鈕,可以看到信息是從緩存中讀出的;當我們輸入客戶相應的資料,增加了一個客戶以後,再按下“刷新“按鈕後,我們可以看到客戶信息變成了從文件讀出。 1.ASPX源程序(performance/FormDataCache.aspx): <!-- 文件名:FormDataCache.aspx --> <%@ Import Namespace="System.IO" %> <%@ Import Namespace="System.Data" %> <html> <script language="VB" runat="server"> sub LoadData1 '當緩存對象DataCache5有效時,從緩存中讀出客戶信息;無效時,從文件讀出信息 dim dv1 as DataView  dv1=Cache("DataCache5")  if dv1 = Nothing  dim ds as DataSet  dim fs as FileStream  dim sr as StreamReader

 ds=New DataSet  fs=New FileStream(Server.MapPath("custom1.xml"),FileMode.Open,FileAccess.Read)  sr=New StreamReader(fs)  ds.ReadXml(sr)  fs.Close()  dv1=new DataView(ds.Tables(0))  Cache.Insert("DataCache5",dv1,New cachedependency(Server.MapPath("custom1.xml")))  lblMsg.text="數據從文件中讀出..."  Else  lblmsg.text="數據從緩存中讀出..."  end if '綁定到DataGrid1對象  DataGrid1.datasource = dv1  DataGrid1.databind() end sub sub Page_Load(s as object,e as eventargs) '加載頁面時,從文件中讀出客戶信息  if Not IsPostBack  LoadData1()  end if end sub sub AddBtn_Click(s as object,e as eventargs) '增加一個客戶信息到文件中 dim FS as FileStream dim Reader as StreamReader dim DS as DataSet dim dr1 as DataRow dim tw1 as TextWriter  if Not Page.IsValid  lblMsg.text="還有域未曾填充..."  else  DS=New DataSet()  FS=New FileStream(Server.mappath("custom1.xml"),FileMode.Open,FileAccess.Read,FileShare.ReadWrite)  Reader=New StreamReader(FS)  DS.readxml(Reader)         FS.Close()  dr1=DS.tables(0).newrow()      dr1("CustName")=txtName.text  dr1("CustIdno")=txtIdno.text  dr1("CustCard")=txtCard.text  DS.tables(0).rows.add(dr1)               FS=New FileStream(Server.MapPath("custom1.xml"),FileMode.Create,FileAccess.ReadWrite,FileShare.ReadWrite)  tw1=New StreamWriter(FS)  tw1=textwriter.synchronized(tw1)  DS.writexml(tw1)  tw1.close()  LoadData1()  end if end sub sub RefreshBtn_Click(s as object,e as eventargs)  LoadData1() end sub </script> <head> <title> 數據緩衝實驗 </title> </head> <body> <center> <form runat=server> <h2>XML文件緩存測試</h2> <ASP:DataGrid id="DataGrid1" runat="server"         Width="600"         BorderColor="black"         ShowFooter="false"         CellPadding=3         CellSpacing="0"         Font-Name="Verdana"         Font-Size="8pt"           /> <hr> <h3>添加一個客戶信息</h3> <table> <tr> <td>姓    名:</td> <td><ASP:textbox id=txtName runat=server /></td> <td><ASP:RequiredFieldValidator ControlToValidate="txtName" Display="static" ErrorMessage="*" runat=server /> </td> </tr> <tr> <td>身份證號:</td> <td><ASP:textbox id=txtIdno runat=server /></td> <td><ASP:RequiredFieldValidator ControlToValidate="txtIdno" Display="static" ErrorMessage="*" runat=server /> </td> </tr> <tr> <td>信用卡號:</td> <td><ASP:textbox id=txtCard runat=server /></td> <td><ASP:RequiredFieldValidator ControlToValidate="txtCard" Display="static" ErrorMessage="*" runat=server /> </td> </tr> </table> <p> <asp:button text="增加" οnclick="AddBtn_Click" runat=server /> <asp:button text="刷新" οnclick="RefreshBtn_Click" runat=server /> <p><p><p> <asp:label id=lblMsg runat=server /> </form> </center> </body> </html>

發佈了5 篇原創文章 · 獲贊 5 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章