対asp.Netキャッシュの詳細
13557 ワード
一、キャッシュ概念、キャッシュのメリット、タイプ.キャッシュは1种の空间で时间を交换する技术で、通俗的に言えばあなたの得たデータをメモリの中でしばらく保存して、この短い时间の内にサーバーはデータベースを読み取らないで、あるいは本当のデータの源で、あなたがメモリの中に保存したデータを読み取って、ここであなたはどのようにデータを保存して、どんな様子のデータを保存することができて、时间の设定を保存することができて、実際のデータソースデータが変更されると、サーバは読み取りにばらつきがあるのではないでしょうか.焦らないで、次はゆっくり話します.の
キャッシュの利点は、キャッシュはウェブサイトの性能最適化に不可欠なデータ処理メカニズムであり、データベースの圧力を効果的に緩和することができます.例えば、ウェブサイトの毎分のクリック率は100万で、キャッシュの静的ページを使用しなければ、ここにもviewstateがない場合(viewstateは大量の文字列が発生し、サーバのインタラクティブなデータに圧力がかかるので、一般的にページはviewstateを無効にし、キャッシュを採用する)は、ユーザーが一度このページをクリックするだけで、このページは1回データライブラリを読み込むので、データベースに与える圧力は想像できますが、ここでキャッシュを使用すると、キャッシュの有効期間を1分に設定し、すると、この1分以内に100万回クリックするのと、1回クリックするのと同じように、データベースが読み込まれ、データソースがメモリにキャッシュされます.
asp.Netのキャッシュは主にページキャッシュ,データソースキャッシュ,カスタムデータキャッシュの3つの主要なタイプに分けられる.
二、データキャッシュ
--------------------------------------------------------------------------------
上のデータ・キャッシュはキャッシュの有効期限が設定されていないため、最初の出力時間は現在の時間(ページのリフレッシュは変わります)、2番目の出力時間は最初にキャッシュに格納された時間(ページのリフレッシュは変わりません).
次に、データキャッシュに実用的なパラメータ(上コード)を追加します.
≪データ・キャッシュ|Data Cache|ldap≫:オブジェクト・キャッシュ・セットに時間のかかるエントリを追加し、キー値で格納します.Cacheを使うことができます.Insert()メソッドは、キャッシュの有効期限、優先度、依存項目などを設定します.
--------------------------------------------------------------------------------
三、ページキャッシュ
--------------------------------------------------------------------------------
キャッシュの利点は、キャッシュはウェブサイトの性能最適化に不可欠なデータ処理メカニズムであり、データベースの圧力を効果的に緩和することができます.例えば、ウェブサイトの毎分のクリック率は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>