対asp.Netキャッシュの詳細

13557 ワード

一、キャッシュ概念、キャッシュのメリット、タイプ.キャッシュは1种の空间で时间を交换する技术で、通俗的に言えばあなたの得たデータをメモリの中でしばらく保存して、この短い时间の内にサーバーはデータベースを読み取らないで、あるいは本当のデータの源で、あなたがメモリの中に保存したデータを読み取って、ここであなたはどのようにデータを保存して、どんな様子のデータを保存することができて、时间の设定を保存することができて、実際のデータソースデータが変更されると、サーバは読み取りにばらつきがあるのではないでしょうか.焦らないで、次はゆっくり話します.の
キャッシュの利点は、キャッシュはウェブサイトの性能最適化に不可欠なデータ処理メカニズムであり、データベースの圧力を効果的に緩和することができます.例えば、ウェブサイトの毎分のクリック率は100万で、キャッシュの静的ページを使用しなければ、ここにもviewstateがない場合(viewstateは大量の文字列が発生し、サーバのインタラクティブなデータに圧力がかかるので、一般的にページはviewstateを無効にし、キャッシュを採用する)は、ユーザーが一度このページをクリックするだけで、このページは1回データライブラリを読み込むので、データベースに与える圧力は想像できますが、ここでキャッシュを使用すると、キャッシュの有効期間を1分に設定し、すると、この1分以内に100万回クリックするのと、1回クリックするのと同じように、データベースが読み込まれ、データソースがメモリにキャッシュされます.
            asp.Netのキャッシュは主にページキャッシュ,データソースキャッシュ,カスタムデータキャッシュの3つの主要なタイプに分けられる.
二、データキャッシュ
--------------------------------------------------------------------------------
 
  
public partial class WebForm1 : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //  Cache["date"]= ;  
            string datastr = DateTime.Now.ToLongTimeString();
            Response.Write(" :"+datastr+"");  // , , 。

            if (Cache["date"] == null) // value date
            {
                Cache["date"] = datastr;
                Response.Write(" :"+Cache["date"] + " ");   // , , 。
            }
            else
            {
                Response.Write(Cache["date"] + " ");// , , , 。
            }
        }
    }


上のデータ・キャッシュはキャッシュの有効期限が設定されていないため、最初の出力時間は現在の時間(ページのリフレッシュは変わります)、2番目の出力時間は最初にキャッシュに格納された時間(ページのリフレッシュは変わりません).
次に、データキャッシュに実用的なパラメータ(上コード)を追加します.
 
  
protected void Page_Load(object sender, EventArgs e)
        {
            string ids="";
            Maticsoft.BLL.ScriptsBak bll = new Maticsoft.BLL.ScriptsBak();
            List list = new List();
            list = bll.GetAll();
            for (int i = 0; i < list.Count; i++)
            {
                ids += list[i].ScriptId.ToString()+"--";
            }
            ids = ids + " ";  // ids id --
            if (Cache["key"] == null)
            {
                Cache.Insert("key", ids, null, DateTime.Now.AddSeconds(40), System.Web.Caching.Cache.NoSlidingExpiration);  // ,
                //"key" ,ids ,null , , null,
                   //null 40
                  // ,ASP.NET , ,
                  // , 40 ,40 。
                Response.Write("cache ---" + Cache["key"] + "");
            }
            else
            {
                Response.Write("cache ---" + Cache["key"] + "");
            }
            Response.Write(" ---" + ids + "");
        }

≪データ・キャッシュ|Data Cache|ldap≫:オブジェクト・キャッシュ・セットに時間のかかるエントリを追加し、キー値で格納します.Cacheを使うことができます.Insert()メソッドは、キャッシュの有効期限、優先度、依存項目などを設定します.
--------------------------------------------------------------------------------
三、ページキャッシュ
--------------------------------------------------------------------------------
 
  
protected void Page_Load(object sender, EventArgs e)
        {
            string date = DateTime.Now.ToString();
            Response.Write(date);
        }
 
  

 



    <br/><br/><br/>    <div><br/><br/>    </div><br/><br/><br/> </code></pre> <br/> ,Duration 10 ,VaryByParam , , , , postid=2536603&update=1 postid=1&update=2 。 , , 。 <p>ASP.NET , 。<br/>--------------------------------------------------------------------------------</p> <p><strong> 、 </strong></p> <p>--------------------------------------------------------------------------------<br/>1.ObjectDataSource , , , , , 10 , 。</p> <p><objectdatasource id="ObjectDataSource1" runat="server" enablecaching="True" cacheduration="10" cacheexpirationpolicy="Absolute"/></p> <p>2. <br/></p> <pre><code> <br/>protected void Page_Load(object sender, EventArgs e)  <br/>        { <br/>            string date = DateTime.Now.ToString(); <br/>            TextBox1.Text = date; <br/>        } <br/> </code></pre> <br/> <pre><code> <br/> <br/> <br/><!--VaryByControl id--> <p> </p><p><br/></p><br/>    <title/><br/><br/><br/>    <form id="form1" runat="server"><br/>        <div><br/>            <textbox id="TextBox1" runat="server"/><br/>        </div><br/>    </form><br/><br/><br/> </code></pre> <br/> TextBox , 10 , 10 ASP.NET 。 <br/>-------------------------------------------------------------------------------- <p><strong> 、 </strong></p> <p>--------------------------------------------------------------------------------<br/></p> <pre><code> <br/>protected void Page_Load(object sender, EventArgs e)  <br/>        { <br/>            string str = ""; <br/>            if (Cache["key"] == null) <br/>            { <br/>                str = System.IO.File.ReadAllText(Server.MapPath("TextFile1.txt")); // TextFile1.txt <br/>                CacheDependency dp = new CacheDependency(Server.MapPath("TextFile1.txt"));// dp <br/>                Cache.Insert("key", str, dp); <br/>                Response.Write(Cache["key"]);   // TextFile1.txt , TextFile1.txt TextFile1.txt <br/>            } <br/>            else <br/>            { <br/>                Response.Write(Cache["key"]); <br/>            } <p>        }<br/></p> </code></pre> <br/>  , , 。 Cache 、 。 , 。 <br/>-------------------------------------------------------------------------------- <p><strong> 、 </strong></p> <p>--------------------------------------------------------------------------------<br/></p> <pre><code> <br/><system.web> <br/>  <caching> <br/>    <outputcachesettings> <br/>      <outputcacheprofiles> <br/>     <addname duration="60"/> <br/>   </outputcacheprofiles> <br/></outputcachesettings> <br/>   </caching> <br/></system.web> <br/> </code></pre> <br/> <pre><code> <br/> <br/> <br/><!-- CacheProfile --> <br/> <p><br/></p><br/>    <title/><br/><br/><br/>    <div><br/><br/>    </div><br/><br/><br/> </code></pre> <br/> 60 。 <br/>-------------------------------------------------------------------------------- <p><strong> 、 </strong></p> <p>--------------------------------------------------------------------------------<br/></p> <pre><code> <br/>protected void Page_Load(object sender, EventArgs e)  <br/>        { <br/>            string str = ""; <br/>            if (Cache["key"] == null) <br/>            { <br/>                str = System.IO.File.ReadAllText(Server.MapPath("TextFile1.txt")); // TextFile1.txt <br/>                CacheDependency dp = new CacheDependency(Server.MapPath("TextFile1.txt"));// dp <br/>                Cache.Insert("key", str, dp, DateTime.Now.AddSeconds(20), Cache.NoSlidingExpiration, CacheItemPriority.Low, CacheItemRemovedCallback); <br/>                //CacheItemPriority , , 。 <br/>                Response.Write(Cache["key"]);   // TextFile1.txt , TextFile1.txt TextFile1.txt <br/>            } <br/>            else <br/>            { <br/>                Response.Write(Cache["key"]); <br/>            } <p>        }</p> <p>        public void CacheItemRemovedCallback(string key, object value, CacheItemRemovedReason reason) // , Cache.Insert() ,<br/>            // , Cache.Insert() , 。<br/>        {<br/>            System.IO.File.WriteAllText(Server.MapPath("log.txt")," :"+reason.ToString());<br/>        }<br/></p> </code></pre> <br/> log.txt, 。 <br/>-------------------------------------------------------------------------------- <p><strong> 、 </strong></p> <p>--------------------------------------------------------------------------------<br/> , , , , , </p> <p> web.config ;</p> <p>1. web.config , web.config </p> <p><system.webserver><br/><caching><br/><profiles><br/><remove extension=".aspx"/><br/><add extension=".aspx" policy="CacheForTimePeriod"> <p>kernelCachePolicy="DontCache" duration="00:00:01" varyByQueryString="*" /><br/></p></add></profiles><br/></caching><br/></system.webserver></p> <p>2. caching , web.config </p> <p><configuration><br/><location path="showStockPrice.asp"><br/><system.webserver> <br/><caching><br/><profiles><br/><remove extension=".asp"/><br/><add extension=".asp" policy="DontCache" kernelcachepolicy="DontCache"/><br/></profiles><br/></caching><br/></system.webserver><br/></location><br/></configuration></p> <p>3. caching , web.config </p> <p><configuration><br/><system.webserver> <br/><caching><br/><profiles><br/><remove extension=".asp"/><br/><add extension=".asp" policy="DontCache" kernelcachepolicy="DontCache"/><br/></profiles><br/></caching><br/></system.webserver><br/></configuration></p> <p>4. caching , web.config </p> <p><location path="~/folderA,~/folderB"><br/><system.webserver><br/><caching><br/><profiles><br/><remove extension=".asp"/><br/><add extension=".asp" policy="DontCache" kernelcachepolicy="DontCache"/><br/></profiles><br/></caching><br/></system.webserver><br/></location><br/></p> <p> </p> <div class="clearfix"> <span id="art_bot" class="jbTestPos"/> </div> </div> </div> </div>