西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)ASP.NET → ASP.NET 緩存技術(shù)快速獲取數(shù)據(jù)

ASP.NET 緩存技術(shù)快速獲取數(shù)據(jù)

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來源:西西整理時(shí)間:2012/5/12 0:04:53字體大。A-A+

作者:佚名點(diǎn)擊:131次評(píng)論:0次標(biāo)簽: 緩存

  • 類型:網(wǎng)絡(luò)瀏覽大。93.3M語言:中文 評(píng)分:10.0
  • 標(biāo)簽:
立即下載

緩存是指系統(tǒng)或應(yīng)用程序?qū)㈩l繁使用的數(shù)據(jù)保存到內(nèi)存中,當(dāng)系統(tǒng)或應(yīng)用程序再次使用時(shí),能構(gòu)快速的獲取數(shù)據(jù)。

它的弊端在于顯示的內(nèi)容可能不是最新,最精確的

ASP.Net 緩存主要分為兩大類: 網(wǎng)頁輸出緩存和應(yīng)用程序緩存

       網(wǎng)頁輸出緩存針對(duì)ASP.NET Pages 頁面中的HTML進(jìn)行緩存,是可視化內(nèi)容對(duì)象,如圖片,GridView表格控件,用戶控件等

       應(yīng)用程序緩存是針對(duì)應(yīng)用程序內(nèi)的數(shù)據(jù)緩存,如:將DataSet等數(shù)據(jù)存儲(chǔ)到緩存

網(wǎng)頁輸出緩存:(ASP 2.0 框架以后所形成功能)

【注:頁輸出緩存可以分別為每個(gè)頁配置緩存頁緩存,也可以在Web.config文件中創(chuàng)建緩存配置文件】

       完整頁面緩存   

           完整頁面緩存是指將已生成的動(dòng)/靜頁面全部?jī)?nèi)容保存在服務(wù)器中  

           設(shè)置頁的緩存可以使用一下兩種方式:

           【1】:使用<%@OutputCache…%>指令聲明(高級(jí))

            要對(duì)一個(gè)網(wǎng)頁P(yáng)age假如60s 完整網(wǎng)頁緩存可以在.aspx 網(wǎng)頁中加入 一段指令聲明。如下:

1<%@ OutputCache Duration="60" VaryByParam="none"  %>

緩存展現(xiàn)示例:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%
--設(shè)置整頁緩存--%>
<%
@ OutputCache Duration="10" VaryByParam="none"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>完整網(wǎng)頁緩存</title>
    <script runat="server">
        public void Page_Load(object sender, EventArgs e)
        {
            Response.Write("頁面緩存設(shè)置示例:<br>設(shè)置緩存時(shí)間為十秒<br>當(dāng)前時(shí)間:"+DateTime.Now.ToString());
        }
        //由于緩存是不可視的 所以做在這里用一種形式展現(xiàn)出來
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    </div>
    </form>
</body>
</html>
1【2】使用Response.Cache 的頁面輸出緩存API(低級(jí))


1以程序化API方式。要在后臺(tái)代碼中設(shè)置60s的網(wǎng)頁緩存,示例代碼如下:
Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));

           緩存展現(xiàn)示例:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%--使用參數(shù)緩存網(wǎng)頁--%>
<%@ OutputCache Duration="10" VaryByParam="Test" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>完整網(wǎng)頁緩存</title>
    <script runat="server">
        void Page_Load(object sender, EventArgs e)
        {
            //設(shè)置緩存數(shù)據(jù)存儲(chǔ)到服務(wù)器上
            Response.Cache.SetCacheability(HttpCacheability.Server);
            string str = Request.QueryString["Test"];
            if (str == null)
            {
                Response.Cache.SetNoServerCaching();
                Response.Write("沒有設(shè)置緩存的時(shí)間為:" + DateTime.Now.ToString());
            }
            else
            {
                Response.Write("設(shè)置緩存的時(shí)間為:" + DateTime.Now.ToString());
            }
        }
        //由于緩存是不可視的 所以做在這里用一種形式展現(xiàn)出來
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/Default.aspx?Test=test" Text="緩存"></asp:HyperLink>
    </div>
    </form>
</body>
</html>
 API 所運(yùn)用的類型是HttpCachePolicy
   HttpCachePolicy類方法如下:

方法說明
SetAllowResponseInBrowserHistory當(dāng)allow參數(shù)為true時(shí),將使響應(yīng)在客戶端瀏覽器“歷史記錄”緩存中可用,而不論服務(wù)器上所做的HttpCacheability設(shè)置是什么
SetCacheability設(shè)置Cache-Control HTTP 標(biāo)頭。Cache-Control HTTP標(biāo)頭控制在網(wǎng)路上緩存文檔的格式
SetExpires該方法用于設(shè)置緩存過期的絕對(duì)時(shí)間
SetLastModified用于設(shè)置網(wǎng)頁的Last-Modified HTTP標(biāo)頭。Last-Modified HTTP標(biāo)頭表示頁面上次修改時(shí)間,緩存將依靠它來進(jìn)行
SetMaxAge基于指定的時(shí)間跨度設(shè)置Cache-Control:max-age HTTP標(biāo)頭
SetNoServerCaching停止當(dāng)前響應(yīng)的所有源服務(wù)器緩存
SetOmitVaryStar指定再按參數(shù)進(jìn)行區(qū)分時(shí) ,響應(yīng)是否應(yīng)該包含ary:*標(biāo)頭
SetSlidingExpiration將緩存過期從絕對(duì)事件設(shè)置為可調(diào)時(shí)間
SetVaryByCuston指定一個(gè)自定義文本字符串,以此區(qū)別緩存的輸出相應(yīng)

頁面部分緩存 :

        頁面部分緩存可采用兩種工作方式: 控件緩存和緩存后替換

       

        控件緩存:

        控件緩存有兩種設(shè)置方式

        【1】使用OutputCache指令

                 控件緩存的OutputCache指令設(shè)置在用戶控件.ascx文件中,聲明代碼如下

          <%@ OutputCache Duration="60" VaryByParam="none" %>

               緩存展現(xiàn)示例:

               1 .新建一個(gè)網(wǎng)站在默認(rèn)主頁Default.aspx 中添加一個(gè)label控件并在HTML中添加每秒刷新的聲明,通過每秒的更新來觀察用戶控件

             的部分網(wǎng)頁緩存代碼如下:

        <meta http-equiv="refresh" content="1; url= default.aspx"  />
          2.在Default.aspx.cs文件中編寫代碼如下:
          protected void Page_Load(object sender, EventArgs e)
          {
            Label1.Text = "Web頁面 當(dāng)前系統(tǒng)時(shí)間:" + DateTime.Now.ToString();
          }

                3 .在解決方案管理器上,右鍵單擊項(xiàng)目名稱,在彈出的快捷菜單中選擇“添加新項(xiàng)”項(xiàng),在打開的窗口中選擇“web用戶控件”

                   添加個(gè)用戶控件。在.ascx 文件中添加Label控件,添加@OutputCache指令設(shè)置緩存代碼如下:

                    <%@ OutputCache Duration="10" VaryByParam="none" %>

                    在.ascx.cs文件中編寫與第二步同樣的代碼。

                4.將Default.aspx切換到設(shè)計(jì)視圖 從解決方案管理器中將定義的用戶控件拖入到設(shè)計(jì)中。

         【2】在代碼隱藏文件中使用PartailCachingAttibute類

             PartailCachingAttibute屬性類標(biāo)記用戶控件(.ascx文件)

             如以下示例代碼是在用戶控件的.ascx.cs 后臺(tái)代碼的開頭加入緩存屬性說明,主要用來設(shè)置用戶空件的緩存時(shí)間為10s

               ……引入的命名空間

         [PartialCaching(10)]
         public partial class WebUserControl : System.Web.UI.UserControl
         {…}
      

緩存后替換:緩存后替換是Cache2.0新增的功能它和控件緩存剛好相反實(shí)現(xiàn)緩存后替換的方式有3種

              <1>使用Substitution控件,以聲明的方式來實(shí)現(xiàn);
              <2>使用Substitution控件,以程序化API方式來實(shí)現(xiàn);
              <3>使用AdRotator控件,以AdRotator控件隱式實(shí)現(xiàn)。

緩存展現(xiàn)示例:.aspx 文件

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<%@ OutputCache Duration="10" VaryByParam="none " %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">
    <title>緩存后替換</title>
    <meta http-equiv="refresh" content="1; url= default.aspx"  />
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Substitution ID="Substitution1" runat="server" MethodName="GetNowTime" />
    </div>
    <div>
        <asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
    </div>
    </form>
</body>
</html>
          .aspx.cs 文件
public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = "頁面被緩存,此時(shí)間10秒內(nèi)不會(huì)發(fā)生變化:" + DateTime.Now.ToString();
    }
    //處理緩存后替換的方法GetNowTime() 此處必須是靜態(tài)的方法
    public static string GetNowTime(HttpContext ctxt)
    {
        return "Substitution控件中的數(shù)據(jù)是動(dòng)態(tài)變化的:" + DateTime.Now.ToString();
    }
}

應(yīng)用程序數(shù)據(jù)緩存 :

應(yīng)用程序數(shù)據(jù)緩存(即頁面數(shù)據(jù)緩存)該緩存機(jī)制類似于Session ,優(yōu)點(diǎn)是由ASP.NET 管理緩存會(huì)在項(xiàng)過期,無效或者內(nèi)存不足時(shí)移出緩存項(xiàng)

注:這里所說僅僅是入門。

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過審核才能顯示)