999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于ASP.NET網站緩沖技術的研究

2011-03-14 06:44:56楊永國何樹有
網絡安全技術與應用 2011年3期
關鍵詞:頁面內容方法

楊永國 何樹有

91550部隊 遼寧 116023

0 引言

緩沖(caching)技術在現在的網站建設中的作用顯得相當重要,由于目前的技術大多是在客戶端瀏覽器發出請求時,動態的生成可瀏覽網頁,如靜態HTML網頁,然后將根據請求生成的網頁傳回瀏覽器,關于動態生成網頁的優勢長處,想必都有所了解,但是,我們現在要考慮的是如何降低這種技術帶來的對性能的更高要求,這種動態生成技術的流行使得對網站的服務器性能要求較高,是因為需要實時的根據瀏覽器的請求生成網頁,在生成復雜網頁或是頻繁生成相同的頁面時,問題顯得尤為嚴重。ASP.NET提供了一種在內存中開辟緩沖區的機制,很好地解決了上述問題。

1 ASP.NET的緩沖機制

ASP.NET為網絡應用程序提供了三種緩沖方式,利用在內存中開辟的緩沖區將難以動態生成的頁面和訪問頻率較高的頁面或是重要的內容放入緩沖區,當網絡應用程序發出請求時,將保存的內容傳給瀏覽器或是應用程序,從而降低了服務器的工作負荷。

1.1 頁面輸出緩沖

頁面輸出緩沖是通過保存已生成的動態頁面來提高請求和響應的吞吐量,頁面緩沖是默認允許的,但是,對于已給定的響應,輸出是不加以緩沖的,除非是有直接的代碼說明為響應提供頁面輸出緩沖。

要為響應提供輸出緩沖,需指定緩沖區中內容的有效期和建立有訪問權限的公有緩沖,這可以通過OutputCache API實現或是使用@OutputCache指令來完成,當緩沖區建立以后,第一次的 GET請求會為緩沖區開辟一個入口,以后的GET請求或是 HEAD請求都利用這個入口來并行地利用輸出緩沖的,只要緩沖區中留有請求的內容,輸出緩沖是利用有效期來管理緩沖區中的頁面的,假設在緩沖區中有一個頁面被標記上有效期并且有效期是 60分鐘,那么當這個頁面在緩沖區中停留的時間超過60分鐘時就會被清理出緩沖區。如果此時請求這個頁面 那么這個被清理出緩沖區的頁面就會根據請求重新創建,然后又一次放入緩沖區標記上新的有效期,這種類型的有效期就是絕對有效期,也就是頁面在緩沖區中被保留的時間使用指令@OutputCache聲明有效期是:

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

其中,參數Duration是以秒為單位的,Duration =“60”指定了有效期是60秒,參數 VaryByParam指明頁面不會被GET或是POST指令改變。

聲明有效期的方法還可以通過 HttpCachePolicy類來實現,由HttpResponse.Cache 屬性可以得到關于緩沖內容的說明,比如有效期可否被修改等。

1.2 頁面部分緩沖

在將網頁整頁地放入緩沖區變得不現實時,ASP.NET 提供了將網頁的一部分放入緩沖區的方法,頁面部分緩沖。事實上,頁面部分緩沖也可以看成頁面輸出緩沖的一種。使用頁面部分緩沖,首先要將網頁中放入緩沖區的部分分離出來。在網頁中使用user control來說明需要緩沖的部分,然后使用@OutputCache 指令標記出這些部分,為這些部分確定有效期等屬性。

@OutputCache指令一共有6個屬性:

Duration:以秒為單位,指定有效期的時間長度。這是必須的屬性。因為任何輸出緩沖中的內容都要指定有效期,部分緩沖也是一樣。

Location:取值限于枚舉集OutputCacheLocation的ANY、Client、Downstream、Server和None五種枚舉值,默認值是ANY。當輸出緩沖區中的 ASP.NET頁面和用戶控件(user control)時,這個屬性是必須的。

取Client值時,輸出緩沖定位于發送請求的客戶瀏覽器。取Server值時,定位于處理請求的服務器。取 Downstream時,輸出緩沖定位于處理請求的服務器的下傳流。

如果取ANY,那么上面三種情況都是允許的。取None則請求頁面的輸出緩沖沒有被激活,也就是說沒有輸出緩沖可用。

VaryByCustom:當VaryByCustom取browser值時,根據瀏覽器的名字和主要的版本信息改變緩沖區內容。如果屬性值為自定義的字符串,就必須在應用程序的Global.asax文檔中重定義HttpApplication.GetVaryByCustomString方法。

VaryByHeader:根據http頭信息來改變緩沖區內容。當有多重頭信息時,輸出緩沖中會為每個指定的HTTP 頭信息保存不同的頁面文檔。VaryByHeader屬性可以應用于緩沖所有http/1.1的緩沖內容,不僅僅是ASP.NET的緩沖。

但是 VaryByHeader屬性不支持@OutputCache指令對user control的標記,我們在這里只是提一下這個屬性,已使你能獲得對@OutputCache指令的全面認識。

當瀏覽器請求該頁面時,創建表單后,將需要緩沖的部分放入緩沖區。再次請求時,會判斷請求頁面中是否有緩沖區中的頁面部分,如果判斷結果是肯定的,那么將創建請求頁面的其他部分,再加上緩沖區中的內容合成請求頁面,作為請求的響應將頁面傳回瀏覽器。如果請求的頁面在緩沖區中沒有部分緩沖頁面,那么將再次創建請求頁面傳回瀏覽器,并且再次根據@OutputCache 指令將user control部分放入緩沖區中。

1.3 數據緩沖

除了上述的兩種緩沖方法以外,ASP.NET還提供一種強大的,易于操作的緩沖機制—數據緩沖。數據緩沖可以在緩沖區中為每個應用程序保存各種對象,這些對象可以根據http的請求被調用。緩沖區對于各個不同的應用程序來說是私有的。

在ASP.NET中,數據緩沖是通過Cache類來實現的。每個應用程序的緩沖區實際上就是Cache類的一個實例。每個應用程序的生存周期就是這個緩沖實例的生存周期。當應用程序重新運行時Cache類實例會重建。通過Cache類的方法,可以將數據對象放入緩沖區中,然后再根據關鍵字匹配尋找到并加以利用這些對象。

Cache類提供了一個接口,通過這個接口可以完全控制要緩沖的內容,并且可以規定緩沖的時間和方式,一個簡單的添加緩沖對象的例子是:

Cache["keyname"] = keyValue;

然后重新找到這個對象,對這個對象的訪問是:

keyValue = Cache["keyname"];

if(keyValue != null ) { DisplayData(keyValue); }

在ASP.NET中,主要有三種數據緩沖方式:

(1)清除廢物(Scavenging)

當系統的內存資源緊張時,將最不常用的和不重要的內容清除出緩沖區,把內存用來處理頻繁訪問的方法稱為清除廢物的緩沖方式。這種方法在緩沖技術中很常見,比如內存的緩沖 Cache。這種方法保證了在緩沖區中的都是重要的和常用的內容。

使用這種方法需要在將對象放入緩沖區時,為這些對象標記優先級和必需的訪問頻率。

當需要清除廢物時,根據對象的優先級來判斷哪些是不重要的內容,根據指定的訪問頻率判斷哪些內容的訪問頻率達不到指定的頻率,然后將這些內容清除出內存緩沖區。

實現上,在使用Cache.Add和Cache.Insert方法向緩沖區中加入對象時,可以指定其優先級,優先級一共有6種,由小到大依次為:Low、BelowNormal、Normal、AboveNormal、High和NotRemoveable。默認值是Normal。

(2)有效期

在使用Add 和Instert方法時,還可以為添加的內容標上有效期,通過有效期來判斷哪些內容應該被清出緩沖區,這和輸出緩沖的方法類似,超過有效期的內容將會被清除出去。Add和Insert方法有兩個參數來說明這個方法:

DateTime指定了有效期的時間,可以是絕對時間,比如每天1:00也可以是相對時間,比如從創建開始的30秒。

TimeSpan 決定了創建對象的時間間隔。當對象被清出緩沖區時,所有對該對象的請求都會得到 null,直到對象再次創建并加入到緩沖區中。

(3)關鍵字匹配

ASP.NET允許根據外部文件,目錄或其他的緩沖內容來確定要緩沖的內容,這樣就造成了一種依賴關系,可以是依賴外部文件或是依賴關鍵字。當這種依賴關系改變時,緩沖區中的內容就是無效的,需要被清出內存。這種方法可以有效地更新緩沖區中的內容,尤其是當緩沖內容的數據源被修改時,使用這種方法可以根據這種依賴關系來更新緩沖內容,將修改前的數據作為無效內容清除出內存。

三種方法各有所長,可以根據不同的需要來選擇數據緩沖的方法,下面對數據緩沖的類Cache類中的Add和Insert方法進行實例分析。

Add 方法的使用示例:

Cache.Add(key, value, null, DateTime.Now.AddSeconds (15),t,

CacheItemPriority.High, CacheItemPriorityDecay.Slow, onRemove);

我們來逐個的分析參數的含義:

key 緩沖內容的關鍵字,用來引用緩沖內容的關鍵字。value 要放入緩沖的內容。dependencies 依賴關系,當依賴關系發生改變,內容就會被標為無效的數據。絕對有效期 這里有效期時間為15秒。時間間隔 這里用變量來表示間隔的時間。優先級 這里取 CacheItemPritorty.BelowNormal即優先級為BelowNormal。訪問頻率 這里的頻率是Slow。onRemove 如果采用onRemove ,那么當這個應用程序在緩沖區中的對象被清出緩沖區時,會通報應用程序。

Insert方法也有和Add方法一樣的調用形式,參數的含義也相同,除此之外Insert方法還有簡單的調用形式:

Insert(key, value);

Insert(key, value , CacheDependency);

Insert(key, value, CacheDependency, DateTime, TimeSpan);

其中CacheDependency是指依賴關系,DateTime是有效期的時間,TimeSpan是創建對象的時間間隔。

2 結束語

對數據庫有所了解的程序員來說,緩沖這個概念一定不陌生,為了保證數據庫的安全,數據庫對數據的操作都有緩沖機制。同理,ASP.NET中為了保證數據的安全,也引入了緩沖機制,極大的提高了網站的安全性。

[1]王超,張鵬.ASP.NET/XML深入編程技術.北京:希望電子出版社.2009.

[2]趙克立.ASP.NET編程培訓教程.北京:清華大學出版社. 2005.

[3]楊云,ASP.NET 典型系統開發詳解.北京:人民郵電出版社. 2005.

[4]徐謖,ASP.NET應用與開發教程.北京:清華大學出版社. 2007.

猜你喜歡
頁面內容方法
大狗熊在睡覺
刷新生活的頁面
保健醫苑(2022年1期)2022-08-30 08:39:14
內容回顧溫故知新
科學大眾(2022年11期)2022-06-21 09:20:52
主要內容
臺聲(2016年2期)2016-09-16 01:06:53
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
捕魚
同一Word文檔 縱橫頁面并存
淺析ASP.NET頁面導航技術
主站蜘蛛池模板: 多人乱p欧美在线观看| 高清无码一本到东京热| 亚洲美女一级毛片| 中文成人在线视频| 国产精品爆乳99久久| 成人免费一级片| 中文字幕久久波多野结衣| 国产亚洲欧美在线中文bt天堂| 免费一极毛片| 欧美成a人片在线观看| 久久人人97超碰人人澡爱香蕉| 97se亚洲综合在线| 亚洲一区网站| 亚洲精品色AV无码看| 2018日日摸夜夜添狠狠躁| 天天躁夜夜躁狠狠躁图片| 88国产经典欧美一区二区三区| 高清无码不卡视频| a级毛片免费播放| 日韩欧美亚洲国产成人综合| 日本午夜精品一本在线观看| 国产亚洲精品在天天在线麻豆| 在线一级毛片| 手机看片1024久久精品你懂的| 亚洲永久免费网站| 国产成人久视频免费| 日本三区视频| 亚洲香蕉在线| 中国毛片网| 乱人伦视频中文字幕在线| 国产综合亚洲欧洲区精品无码| 欧美三级视频在线播放| 欧美a级在线| 中美日韩在线网免费毛片视频 | 色香蕉影院| 色综合天天视频在线观看| 波多野结衣无码中文字幕在线观看一区二区| 亚洲丝袜中文字幕| 国产精品免费p区| 午夜福利免费视频| 在线国产欧美| 欧美成人第一页| 99在线观看国产| 色老头综合网| 欧美伊人色综合久久天天| 992tv国产人成在线观看| 亚洲国产精品成人久久综合影院| 91久久国产热精品免费| 五月激情婷婷综合| 欧美日韩第三页| 高清码无在线看| 亚洲第一区精品日韩在线播放| 深爱婷婷激情网| 91视频免费观看网站| 久久亚洲黄色视频| 67194在线午夜亚洲 | 久久这里只有精品23| 成年免费在线观看| 五月激激激综合网色播免费| 欧美激情视频一区二区三区免费| 国产欧美专区在线观看| 久久人妻系列无码一区| 伊人天堂网| 中国一级特黄大片在线观看| 精品一区二区三区波多野结衣| 国产91视频免费观看| 毛片免费试看| 91视频日本| 色婷婷电影网| 国产喷水视频| 亚洲无码视频一区二区三区| 无码福利视频| 欧美一级一级做性视频| 妇女自拍偷自拍亚洲精品| 日韩色图在线观看| 伊人国产无码高清视频| 伊人久久精品亚洲午夜| 亚洲综合色婷婷中文字幕| 99久久国产自偷自偷免费一区| 无码中文字幕精品推荐| 中文国产成人久久精品小说| 日韩美女福利视频|