欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
ASP.NET緩存技術(shù)介紹

介紹

緩存是在內存存儲數據的一項技術(shù),也是ASP.NET中提供的重要特性之一。例如你可以在復雜查詢(xún)的時(shí)候緩存數據,這樣后來(lái)的請求就不需要從數據庫中取數據,而是直接從緩存中獲取。通過(guò)使用緩存可以提高應用程序的性能。

主要有兩種類(lèi)型的緩存:

1.輸出緩存Output caching
2.數據緩存Data caching

 

1. 輸出緩存(Output Caching)

使用輸出緩存,你可以緩存最后輸出的HTML頁(yè)面,當相同的頁(yè)面再次請求的時(shí)候,ASP.NET不會(huì )再執行頁(yè)面的生命周期和相關(guān)代碼而是直接使用緩存的頁(yè)面,語(yǔ)法如下:

<%@ OutputCache Duration=”60” VaryByParam=”None”  %> 

Duration 屬性設置頁(yè)面將被緩存60妙。任何的用戶(hù)請求都會(huì )被緩存,在緩沖的60秒內相同的請求都會(huì )直接使用緩存的頁(yè)面。當緩存過(guò)期后ASP.NET會(huì )再次執行頁(yè)面代碼并且為下一個(gè)60秒創(chuàng )建一個(gè)新的HTML緩存。

  <%@ Page Language="C#" MasterPageFile="~/MasterPage.master" AutoEventWireup="true"     
   CodeFile="OutputCachingTest.aspx.cs" Inherits="OutputCachingTest" Title="Untitled Page" %> 
<%@ OutputCache Duration="20" VaryByParam="None" %> 
<asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">    
<div class="title">Output Cache</div>   Date: <asp:Label ID="lblDate" runat="server" Text="" /> 
  Time: <asp:Label ID="lblTime" runat="server" Text="" />        </asp:Content>
protected void Page_Load(object sender, EventArgs e)
{ 
  lblDate.Text = DateTime.Now.ToShortDateString(); 
  lblTime.Text = DateTime.Now.ToLongTimeString(); 
} 

在這個(gè)例子中頁(yè)面將被緩存20秒。

通過(guò)查詢(xún)字符串緩存(Cache by Query String )

在實(shí)際應用中頁(yè)面往往會(huì )根據一些參數動(dòng)態(tài)的改變頁(yè)面的內容。如果你的頁(yè)面是通過(guò)查詢(xún)字符串來(lái)獲取信息的,你可以根據查詢(xún)字符串很容易的緩存頁(yè)面的不同拷貝。VarByParam=”None”指定ASP.NET只存儲緩存頁(yè)面的一個(gè)拷貝。VarByParam=”*” 指定ASP.NET根據不同的查詢(xún)字符串存儲不同的緩存頁(yè)面。

<%@ OutputCache Duration="60" VaryByParam="*" %>
 <div align="right">  
 <a href="OutputCachingTest2.aspx">No Query String</a> |  
  <a href="OutputCachingTest2.aspx?id=1">ID 1</a> |  
  <a href="OutputCachingTest2.aspx?id=2">ID 2</a> |  
  <a href="OutputCachingTest2.aspx?id=3">ID 3</a> | 
  <a href="OutputCachingTest2.aspx?id=3&langid=1">ID 3</a>
</div> 


上面的例子中,在查詢(xún)字符串中傳了不同的ID.ASP.NET為每一個(gè)ID都存儲了單獨的緩存頁(yè)面。這種方式會(huì )有一些問(wèn)題

就是當查詢(xún)字符串范圍很廣的時(shí)候。這個(gè)時(shí)候我們可以在VarByParam 屬性中指定重要的查詢(xún)字符串變量的名字,如下:

<%@OutputCacheDuration="60"VaryByParam="id;langid"%>

這樣,ASP.NET可以根據id” or “l(fā)angid”來(lái)緩存不同的緩存版本。

 

自定義緩存(Custom Caching)

你也可以創(chuàng )建自定義的程序來(lái)緩存頁(yè)面。ASP.NET提供了一種很便捷的方式來(lái)創(chuàng )建自定義緩存,使用VarByCustom屬性指定自定義緩存類(lèi)型的名字。

<%@OutputCacheDuration="20"VaryByParam="None"VaryByCustom="browser"%>

你還要創(chuàng )建為緩存生成自定義字符串的方法,如下:

public override stringGetVaryByCustomString(HttpContext context, stringcustom)
{
    if(custom == "browser")
    {
       returncontext.Request.Browser.Browser +
              context.Request.Browser.MajorVersion;
    }
    else
  
{
       return base.GetVaryByCustomString(context, custom);
    }
}

這個(gè)方法必須寫(xiě)在global.asax文件中。ASP.NET使用該方法返回的字符串來(lái)實(shí)現緩存,如果這個(gè)方法在不同的請求中返回相同的字符串,ASP.NET就會(huì )使用緩存的頁(yè)面,否則就會(huì )生成新的緩存版本。

上面的例子中GetVaryByCustomString()方法根據瀏覽器的名字創(chuàng )建緩存字符串,ASP.NET會(huì )根據不同的瀏覽器請求創(chuàng )建不同版本的緩存。

控件緩存(Control Cache )

上面的緩存技術(shù)可以讓你很容易的緩存整個(gè)頁(yè)面,如果要緩存指定控件的內容,可以通過(guò)指定VaryByControl 屬性來(lái)完成。

<%@OutputCacheDuration="20"VaryByControl="MyControl_1"%>

上面代碼ASP.NET將會(huì )緩存MyControl_1控件20分鐘。如果要根據一些屬性值來(lái)緩存控件只需要將OutPutCache指令加入*.ascx頁(yè)面。 

<%@Control Language="C#"AutoEventWireup="true"CodeFile="MyControl.ascx.cs"Inherits="Controls_MyControl"%>
<%
@OutputCacheDuration="20"VaryByControl="EmployeeID"%>
......
......

VaryByControl=”EmployeeID”告訴ASP.NET根據控件中聲明的EmployeeID屬性來(lái)創(chuàng )建不同版本的緩存。

.ascx.cs 文件加入EmplyeeID屬性為ASP.NET 緩存使用。

private int_employeeID;

public intEmployeeID
{
   get{ return_employeeID; }
   set{ _employeeID = value; }
}

protected voidPage_Load(objectsender, EventArgs e)
{
   lblDate.Text = DateTime.Now.ToShortDateString();
   lblTime.Text = DateTime.Now.ToLongTimeString();

   lblEmployeeID.Text = EmployeeID.ToString();

}

在頁(yè)面中增加控件并且設置 EmployeeID.

<%@RegisterSrc="Controls/MyControl.ascx"TagName="MyControl"TagPrefix="uc1"%>
<asp:ContentID="Content1"ContentPlaceHolderID="ContentPlaceHolder1"runat="Server">
    <
divalign="center">
        <
uc1:MyControlID="MyControl1"runat="server"EmployeeID="1"></uc1:MyControl>
    </
div>
</
asp:Content>

 

緩存配置文件(Cache Profile )

web.config可以配置緩存相關(guān)的設置,

<system.web>
  <
caching>
    <
outputCacheSettings>
      <
outputCacheProfiles>
     <
addname="ProductItemCacheProfile" duration="60"/>
   </
outputCacheProfiles>
</
outputCacheSettings>
   </
caching>
</
system.web>

你可以通過(guò)設置 CacheProfile=”P(pán)rofileName” 屬性 來(lái)使用上面的配置:

%@OutputCacheCacheProfile="ProductItemCacheProfile"VaryByParam="None"%

2. 數據緩存(Data Caching)

ASP.NET還提供了另一種靈活的緩存類(lèi)型:數據緩存。你可以將一些耗費時(shí)間的條目加入到一個(gè)對象緩存集合中,以鍵值的方式存儲。

Cache["Name"] = data;

我們可以通過(guò)使用Cache.Insert()方法來(lái)設置緩存的過(guò)期,優(yōu)先級,依賴(lài)項等。

date1 = DateTime.Now;Cache.Insert("Date1", date1, null, DateTime.Now.AddSeconds(20), TimeSpan.Zero);

ASP.NET允許你設置一個(gè)絕對過(guò)期時(shí)間或滑動(dòng)過(guò)期時(shí)間,但不能同時(shí)使用。

緩存依賴(lài)項Cache dependency

緩存依賴(lài)項使緩存依賴(lài)于其他資源,當依賴(lài)項更改時(shí),緩存條目項將自動(dòng)從緩存中移除。緩存依賴(lài)項可以是應用程序的 Cache 中的文件、目錄或與其他對象的鍵。如果文件或目錄更改,緩存就會(huì )過(guò)期。

date2 = DateTime.Now;

string[] cacheKeys = { "Date1"};
CacheDependency cacheDepn = newCacheDependency(null, cacheKeys);
Cache.Insert("Date2", date2, cacheDepn);

上面的例子“Date2”緩存對象依賴(lài)“Date1”緩存條目,當 “Date1” 對象過(guò)期后“Date2” 將會(huì )自動(dòng)過(guò)期。CacheDependency(null, cacheKeys)中的第一個(gè)參數為空是由于我們只監視緩存鍵的更改情況。

回調函數和緩存優(yōu)先級(Callback Method and Cache Priority)

ASP.NET允許我們寫(xiě)一個(gè)回調函數,當緩存條目從緩存中移除的時(shí)候觸發(fā)。還可以設置緩存條目的優(yōu)先級。

protected void Page_Load(object sender, EventArgs e){ 
 DateTime? date1 = (DateTime?)Cache["Date1"]; 
 if (!date1.HasValue) // date1 == null 
 {    
      date1 = DateTime.Now;   
     Cache.Insert("Date1", date1, null, DateTime.Now.AddSeconds(20), TimeSpan.Zero, 
     CacheItemPriority.Default, new CacheItemRemovedCallback(CachedItemRemoveCallBack));  
}  
DateTime? date2 = (DateTime?)Cache["Date2"];  
if (!date2.HasValue) // date2 == null  
 {    
      date2 = DateTime.Now; 
      Cache.Insert("Date2", date2, null, DateTime.Now.AddSeconds(40), TimeSpan.Zero,  
      CacheItemPriority.Default, new CacheItemRemovedCallback(CachedItemRemoveCallBack)); 
 }
  // Set values in labels  
 lblDate.Text = date1.Value.ToShortDateString(); 
 lblTime.Text = date1.Value.ToLongTimeString();
  lblDate1.Text = date2.Value.ToShortDateString(); 
 lblTime1.Text = date2.Value.ToLongTimeString();}
private void CachedItemRemoveCallBack(string key, object value, CacheItemRemovedReason reason)
{
    if (key == "Date1" || key == "Date2")  
   {
      Cache.Remove("Date1");  
     Cache.Remove("Date2");  
    }
}

例子中創(chuàng )建了“Date1” 和 “Date2”緩存?!癉ate1” 在20秒后過(guò)期“Date2”為40秒。但是由于我們注冊了移除的回調函數,當“Date1” 或 “Date2”其中一個(gè)過(guò)期都會(huì )執行CachedItemRemoveCallBack 方法,在這個(gè)方法中移除了兩個(gè)緩存條目,ASP.NET還提供了處理緩存條目更新時(shí)的回調函數CacheItemUpdateCallback

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
ASP.Net緩存總結及分析
ASP.NET中使用Cache類(lèi)來(lái)緩存頁(yè)面的信息
整理了一下MSDN中關(guān)于A(yíng)SP.NET緩存機制的論述 - qdzx2008的專(zhuān)欄 - CS...
asp.net頁(yè)面緩存技術(shù)
ASP.NET的Cache緩存應用
使用ASP.NET實(shí)現Windows Service定時(shí)執行任務(wù)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久