久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

asp.net頁面緩存技術(shù)

 靜心怡苑LM 2012-09-26
頁面緩存
使用OutputCache指令,。
<%@ OutputCache Duration="3600"
               Location="Any"
               VaryByCustom="browser"
               VaryByParam="RequestID" %>
其中Duration和VaryByParam特性是必須的,。
 
Location控制頁面緩存的位置
Location
含義
Any
默認(rèn)值,。意味著頁面的輸出可以緩存在客戶端瀏覽器,緩存在任何“下游”的客戶端(如代理服務(wù)器),,或緩存在Web服務(wù)器本身
Client
指明輸出緩存只能存儲(chǔ)在發(fā)出請(qǐng)求的客戶端(即瀏覽器)的本地緩存中
Downstream
指明輸出緩存能存儲(chǔ)在任何支持HTTP1.1緩存的設(shè)備(如代理服務(wù)器)中
Server
指明輸出緩存將存儲(chǔ)在Web服務(wù)器上
None
指明該頁面禁用輸出緩存
 
Duration允許我們控制頁面在緩存中生存的時(shí)間(單位是秒)
 
VaryByParam允許我們緩存頁面的不同版本,。在上面的例子中,VaryByParam設(shè)為了RequestID,,所以ASP.NET使用RequestID參數(shù)的不同值,,這些值或者是在HTTP GET的查詢字符串中傳入,或者是在HTTP POST的參數(shù)中傳入,??梢酝ㄟ^檢查RequestID參數(shù)的值讓應(yīng)用程序區(qū)分不同的用戶;通過在頁面的OutputCache指令中放置VaryByParam="RequestID",,可以讓ASP.NET為每個(gè)用戶緩存頁面的不同版本,。
如果不想根據(jù)參數(shù)的值緩存頁面的不問版本,那么只要把VaryByParam設(shè)為none。
也可以要求ASP.NET為每個(gè)可能的參數(shù)組合緩存頁面的一個(gè)版本,。為此,,可把VaryByParam設(shè)為*。
 
VaryByHeader和VaryByCustom特性與VaryByParam的相似之處在于,,它們?cè)试S指定何時(shí)應(yīng)創(chuàng)建頁面新的緩存版本,。
VaryByHeader允許我們根據(jù)由分號(hào)分隔的HTTP頭的列表末緩存頁面的不向版本。
VaryByCustom當(dāng)設(shè)為browser時(shí),,允許我們根據(jù)瀏覽器的名稱和主版本信息緩存不同版本,。也可以把它設(shè)為一個(gè)自定義方法的名稱,從而實(shí)現(xiàn)我們自己的邏輯,,控制緩存的版本,。
 
片斷緩存
可以利用用戶控件將頁面分段,在ascx文件中寫入緩存的語句,,而不在aspx文件中寫緩存語句,,這樣ASP.NET就可以只緩存ascx片斷的輸出了。一般像頁眉或頁腳基本上都是一樣的,,就不需要重新加載,。但是如果其中有動(dòng)態(tài)變化的數(shù)據(jù)就不能對(duì)其進(jìn)行緩存,因?yàn)橐坏┍痪彺婧蟪绦蚓筒粫?huì)再創(chuàng)建它的實(shí)例來更新數(shù)據(jù)顯示,,只有等到生存期過期才行,,所以對(duì)于這種情況就不適于用頁面片斷緩存。
注意:
一,、注意片段緩存不支持Location特性,;緩存頁面片段惟一合法的地方是web服務(wù)器。這是因?yàn)槠尉彺嬖贏SP.NET中是新的功能,,所以瀏覽器和代理服務(wù)器不支持,。
二、片段緩存有另外一個(gè)在頁面緩存中沒有的特性——VaryByControl,。VaryByControl特性允許指定一個(gè)由分號(hào)分隔的字符串列表,,代表用戶控件內(nèi)使用的控件的名稱;ASP.NET將針對(duì)值的每個(gè)不同的組合生成用戶構(gòu)件的一個(gè)緩存版本,。
 
數(shù)據(jù)緩存
低級(jí)API是Cache類,,它位于ASP.NET中的System.web.Caching命名空間,可以用它緩存生成很耗費(fèi)資源的數(shù)據(jù),。Cache類的使用和Session與Application對(duì)象一樣簡單,。每個(gè)應(yīng)用程序只有一個(gè)Cache對(duì)象——這意味著使用Cache對(duì)象存儲(chǔ)在緩存中的數(shù)據(jù)是應(yīng)用程序級(jí)別的數(shù)據(jù)。使事情更為簡單的是,,Page類的Cache屬性使應(yīng)用程序的Cache對(duì)象實(shí)例能在代碼中使用,。
通過Cache對(duì)象緩存的數(shù)據(jù)存儲(chǔ)在應(yīng)用程序的內(nèi)存中,。這意味著該數(shù)據(jù)的生存期不會(huì)超過應(yīng)用程序的重啟(事實(shí)上,這和存儲(chǔ)在Application與Session對(duì)象中的數(shù)據(jù)一樣,,除非使用StateService或SQL State會(huì)話模式存儲(chǔ)Session數(shù)據(jù)),。
具體的使用和語法與Session和Application一樣,。轉(zhuǎn)換回來的時(shí)候需要注意對(duì)其進(jìn)行相應(yīng)類型的強(qiáng)制類型轉(zhuǎn)換,。
 
這不是在ASP.NET緩存中添加緩存項(xiàng)的惟一方式。Cache對(duì)象有兩個(gè)方法Insert()方法和Add()方法,,它們靈活性更高,。它們的用法近似,但稍有不同:
Insert()方法用于覆蓋ASP.NET緩存中現(xiàn)有的緩存項(xiàng),。
Add()方法只用于在ASP.NET緩存中添加新的緩存項(xiàng)(如果用它覆蓋現(xiàn)有的緩存項(xiàng),,則會(huì)失敗)。
每個(gè)方法都有7個(gè)參數(shù),,而且兩個(gè)方法的參數(shù)相同,。
在緩存某一項(xiàng)時(shí),可以指定它的相關(guān)性,,告訴ASP.NET該緩存項(xiàng)在緩存中一直保留到某個(gè)事件發(fā)生時(shí)為止,。
相關(guān)性值
含義
CacheDependency
允許指定一個(gè)文件或緩存鍵。如果文件發(fā)生變化,,對(duì)象就被刪除,。如果緩存鍵發(fā)生變化,對(duì)象也被刪除,。
DateTime
這是一個(gè)DataTime值,,指明緩存數(shù)據(jù)過期的時(shí)間(絕對(duì)過期時(shí)間)
TimeSpan
這是一個(gè)時(shí)間間隔,指明緩存數(shù)據(jù)在上一次訪問后可以在緩存中保留多長時(shí)間(彈性過期時(shí)間)
使用CacheItemPriority來指定緩存數(shù)據(jù)的優(yōu)先級(jí),,以便在緩存被填滿的時(shí)候刪除那些優(yōu)先級(jí)低的數(shù)據(jù),。
優(yōu)先級(jí)值
含義
High
設(shè)為此優(yōu)先級(jí)的緩存項(xiàng)是最不可能在內(nèi)存不足時(shí)被刪除的
AboveNormal
設(shè)為此優(yōu)先級(jí)的緩存項(xiàng)比優(yōu)先級(jí)為Normal或以下的緩存項(xiàng)更優(yōu)先保留
Normal
設(shè)為此優(yōu)先級(jí)的緩存項(xiàng)比優(yōu)先級(jí)為BelowNormal和Low的緩存項(xiàng)更優(yōu)先保留
BelowNormal
這是倒數(shù)第二級(jí)的優(yōu)先級(jí);設(shè)為此優(yōu)先級(jí)的緩存項(xiàng)只比優(yōu)先級(jí)設(shè)為Low的緩存項(xiàng)更優(yōu)先保留
Low
設(shè)為此優(yōu)先級(jí)的緩存項(xiàng)是最有可能在內(nèi)存不足時(shí)被刪除的
Default
緩存項(xiàng)的優(yōu)先級(jí)的默認(rèn)值是Normal
NotRemovable
當(dāng)緩存項(xiàng)設(shè)為此優(yōu)先級(jí)時(shí),,是在告訴ASP.NET即使是內(nèi)存不足,,也不要從緩存中刪除它
DateTime dt = new DateTime(DateTime.Now.Year,12,31);
Cache.Add("MembersDataSet",dsMembers,null,
dt,TimeSpan.Zero,
CacheItemPriority.Normal,null);
第一個(gè)參數(shù)是引用緩存對(duì)象的鍵,第二個(gè)參數(shù)是要緩存的對(duì)象,。第三個(gè)參數(shù)是null(表明沒有相關(guān)性),。
第四和第五個(gè)參數(shù)是絕對(duì)的過期時(shí)間和彈性的過期時(shí)間。這里,,我們指定緩存應(yīng)在當(dāng)前年份的最后一天過期(dt),。我們想指定沒有彈性的過期時(shí)間,所以第五個(gè)參數(shù)使用TimeSpan.Zero,。第六個(gè)參數(shù)使用System.Web.Caching.CacheItemPriority枚舉中的一個(gè)值,,把優(yōu)先級(jí)設(shè)為Normal,。
 
指定一個(gè)5分鐘的彈性過期時(shí)間,沒有指定絕對(duì)過期時(shí)間
Cache.Add("MembersDataSet",dsMembers,null,
                DateTime.MaxValue,TimeSpan.FromMinutes(5),
            CacheItemPriority.Normal,null);
 
添加一個(gè)相關(guān)性,。在這個(gè)例子中,,過期時(shí)間也取決于一個(gè)文件的修改,即test.xml文件:
CacheDependency dep = new CacheDependency(@"C:/test.xml");
Cache.Add("MembersDataSet",dsMembers,dep,
                DateTime.MaxValue,TimeSpan.FromMinutes(5),
            CacheItemPriority.Normal,null);
 
過期時(shí)間取決于緩存中另一項(xiàng)的修改:
String[] dependencyKeys = new String[1];
dependencyKeys[0= "MembersChanged";
CacheDependency dependency = new CacheDependency(null, dependencyKeys);
Cache.Add("MembersDataSet",dsMembers,dependency,
                DateTime.MaxValue,TimeSpan.Zero,
            CacheItemPriority.Normal,null);
 
最后一個(gè)參數(shù)是CacheItemRemovedCallback類型的,,允許我們?cè)诰彺骓?xiàng)從緩存中刪除時(shí)要求通知,,可以編寫一個(gè)自定義的方法(像這里的ItemRemovedCallback()方法),然后在第7個(gè)參數(shù)中指定該方法:
        public void ItemRemovedCallback(String key, Object value, CacheItemRemovedReason reason)
        {
        }
 
Cache.Add("MembersDataSet",dsMembers,dependency,
                DateTime.MaxValue,TimeSpan.FromMinutes(5),
            CacheItemPriority.Normal,
new CacheItemRemovedCallback(this.ItemRemovedCallback));
第一個(gè)參數(shù)是在緩存中存儲(chǔ)緩存項(xiàng)時(shí)使用的鍵,,第二個(gè)是存儲(chǔ)的對(duì)象本身,,第三個(gè)是緩存項(xiàng)刪除的原因。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多