網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)公司!專注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了大新免費(fèi)建站歡迎大家使用!
1,ASPNET輸出頁(yè)面緩存方法
ASPX頁(yè)面前面加上<%@ OutputCache Duration="100" VaryByParam="none"%>
這個(gè)是使用緩存的方法之一。
http://hi.baidu.com/bangbangnt/blog/item/4010f62ca1dedc3d359bf72d.html
你可以看看這篇文章。2,ASPNET數(shù)據(jù)庫(kù)緩存如何實(shí)現(xiàn)
有很多種方式,根據(jù)你網(wǎng)站的對(duì)緩存的技術(shù)架構(gòu)而定1. 如果不需要分布式緩存,可以直接使用asp.net提供的緩存,這個(gè)緩存最大的優(yōu)點(diǎn):提供了移除通知,與移除回掉2. 分布式緩存:這個(gè)就多了,以前比較流行memeorycache,但是它的數(shù)據(jù)結(jié)構(gòu)太單一,只支持鍵值對(duì)?,F(xiàn)在比較流行nosql(品種多,數(shù)據(jù)結(jié)構(gòu)豐富)你連接數(shù)據(jù)庫(kù)只要在webconfig文件中加連接字符串就可以了.3,aspnet把數(shù)據(jù)放到緩存
首先,把從文件里讀出來(lái)的數(shù)據(jù)放到緩存里,然后從緩存里讀取這些數(shù)據(jù),用下面兩個(gè)函數(shù)。實(shí)際可以這么做,每次需要違禁詞的時(shí)候,都嘗試從緩存里讀取,如果讀取的是NULL,從硬盤里讀取后放到緩存,然后使用;如果不是NULL,直接使用.設(shè)置緩存public static void SetCache(string CacheKey, object objObject) System.Web.Caching.Cache objCache = HttpRuntime.Cache; objCache.Insert(CacheKey, objObject);}讀取緩存public static object GetCache(string CacheKey) System.Web.Caching.Cache objCache = HttpRuntime.Cache; return objCache[CacheKey];}只需要在控件頂部加入緩存指令即可。我舉個(gè)例子: <%@ control language="c#" autoeventwireup="true" codefile="webusercontrol1.ascx.cs" inherits="webusercontrol1" %><%@ outputcache duration="3" varybyparam="*" %>4,如何利用緩存提高ASPNET網(wǎng)站速度
要實(shí)現(xiàn)頁(yè)面輸出緩存,只要將一條OutputCache指令添加到頁(yè)面即可。<%@ OutputCache Duration="60" VaryByParam="*" %>如同其他頁(yè)面指令一樣,該指令應(yīng)該出現(xiàn)在ASPX頁(yè)面的頂部,即在任何輸出之前。它支持五個(gè)屬性(或參數(shù)),其中兩個(gè)是必需的。 每個(gè)頁(yè)面都寫上這句話有些啰嗦,可以在web.config里配置如下: 復(fù)制代碼代碼如下:varyByParam="none" /> 在頁(yè)面中引用代碼如下: <%@ OutputCache CacheProfile="Cache30Seconds"%> Duration 必需屬性。頁(yè)面應(yīng)該被緩存的時(shí)間,以秒為單位。必須是正整數(shù)。Location 指定應(yīng)該對(duì)輸出進(jìn)行緩存的位置。如果要指定該參數(shù),則必須是下列選項(xiàng)之一:Any、Client、Downstream、None、Server或ServerAndClient。VaryByParam 必需屬性。Request中變量的名稱,這些變量名應(yīng)該產(chǎn)生單獨(dú)的緩存條目。“none”表示沒(méi)有變動(dòng)。“*”可用于為每個(gè)不同的變量數(shù)組創(chuàng)建新的緩存條目。變量之間用“;”進(jìn)行分隔。VaryByHeader 基于指定的標(biāo)頭中的變動(dòng)改變緩存條目。VaryByCustom 允許在global.asax中指定自定義變動(dòng)(例如,“Browser”)。利用必需的Duration和VaryByParam選項(xiàng)的組合可以處理大多數(shù)情況。例如,如果您的產(chǎn)品目錄允許用戶基于categoryID和頁(yè)變量查看目錄頁(yè),您可以用參數(shù)值為“categoryID;page”的VaryByParam將產(chǎn)品目錄緩存一段時(shí)間(如果產(chǎn)品不是隨時(shí)都在改變,一小時(shí)還是可以接受的,因此,持續(xù)時(shí)間是3600秒)。這將為每個(gè)種類的每個(gè)目錄頁(yè)創(chuàng)建單獨(dú)的緩存條目。每個(gè)條目從其第一個(gè)請(qǐng)求算起將維持一個(gè)小時(shí)。VaryByHeader和VaryByCustom主要用于根據(jù)訪問(wèn)頁(yè)面的客戶端對(duì)頁(yè)面的外觀或內(nèi)容進(jìn)行自定義。同一個(gè)URL可能需要同時(shí)為瀏覽器和移動(dòng)電話客戶端呈現(xiàn)輸出,因此,需要針對(duì)不同的客戶端緩存不同的內(nèi)容版本?;蛘?,頁(yè)面有可能已經(jīng)針對(duì)IE進(jìn)行了優(yōu)化,針對(duì)Netscape或Opera則應(yīng)取消這種優(yōu)化功能。后一個(gè)例子非常普遍,我們將提供一個(gè)說(shuō)明如何實(shí)現(xiàn)此目標(biāo)的示例:示例:VaryByCustom用于支持瀏覽器自定義為了使每個(gè)瀏覽器都具有單獨(dú)的緩存條目,VaryByCustom的值可以設(shè)置為“browser”。此功能已經(jīng)內(nèi)置在緩存模塊中,并且將針對(duì)每個(gè)瀏覽器名稱和主要版本插入單獨(dú)的頁(yè)面緩存版本。<%@ OutputCache Duration="60" VaryByParam="None" VaryByCustom="browser"%>片段緩存,用戶控件輸出緩存只需要在控件頂部加入緩存指令即可。我舉個(gè)例子: <%@ control language="c#" autoeventwireup="true" codefile="webusercontrol1.ascx.cs" inherits="webusercontrol1" %><%@ outputcache duration="3" varybyparam="*" %>
5,關(guān)于ASPNET中的緩存問(wèn)題的幾種方式
1以編程方式操作 HttpCachePolicy 類。HttpCachePolicy.SetExpiresHttpCachePolicy.SetCacheability |NoCache|Private|Public|Server|ServerAndNoCache|ServerAndPrivate2Duration 和 VaryByParam 屬性是必需的。2)緩存 ASP.NET 頁(yè)的某些部分不變的部分緩存起來(lái),不必總是請(qǐng)求服務(wù)器控件頭部,則該控件的一個(gè)版本將在輸出緩存中存儲(chǔ) 120 秒?;蚴褂么a隱藏開發(fā)方法開發(fā)用戶控件,則將以下屬性包含在類聲明的元數(shù)據(jù)中時(shí),控件版本將在輸出緩存中存儲(chǔ) 120 秒。[C#][PartialCaching(120)]以上兩法將僅緩存用戶控件。也可嵌套使用,在已緩存的頁(yè)面或控件中緩存控件。!!可能的錯(cuò)誤:如果編寫代碼來(lái)操作一個(gè)包含 @ OutputCache 指令的用戶控件,則將出現(xiàn)錯(cuò)誤。另外,如果頁(yè)輸出緩存設(shè)置為 100 秒,而用戶控件輸出緩存設(shè)置為 50 秒,則整個(gè)頁(yè)將在輸出緩存中存儲(chǔ) 100 秒,而與用戶控件較短的時(shí)間設(shè)置無(wú)關(guān)。不過(guò),如果頁(yè)輸出緩存存儲(chǔ)持續(xù)時(shí)間比用戶控件存儲(chǔ)持續(xù)時(shí)間短,則將一直使用緩存用戶輸出控件,直到其存儲(chǔ)時(shí)間到期為止,即使該頁(yè)的其余部分已為某個(gè)請(qǐng)求重新生成。例如,如果頁(yè)輸出緩存設(shè)置為 50 秒,而用戶控件輸出緩存設(shè)置為 100 秒,則頁(yè)的其余部分每到期兩次,用戶控件就到期一次。3)緩存應(yīng)用程序數(shù)據(jù)允許您將需要大量的服務(wù)器資源來(lái)創(chuàng)建的對(duì)象存儲(chǔ)在內(nèi)存中。它是由 Cache 類實(shí)現(xiàn)的,實(shí)例是每個(gè)應(yīng)用程序?qū)S玫?,其生存期依賴于該?yīng)用程序的生存期。重新啟動(dòng)應(yīng)用程序后,將重新創(chuàng)建 Cache 對(duì)象。1 應(yīng)用程序?qū)崿F(xiàn)的動(dòng)態(tài)頁(yè)面緩存應(yīng)用程序把動(dòng)態(tài)文件生成的html文件緩存到文件服務(wù)器,以后用戶請(qǐng)求動(dòng)態(tài)文件,直接從文件服務(wù)器加載對(duì)應(yīng)的靜態(tài)緩存的html文件返回給用戶,這里面主要節(jié)省了動(dòng)態(tài)語(yǔ)言的執(zhí)行時(shí)間和數(shù)據(jù)庫(kù)訪問(wèn)時(shí)間。但是會(huì)增加了緩存框架的加載和緩存查找的時(shí)間。2 把解釋執(zhí)行的開發(fā)語(yǔ)言編譯成為目標(biāo)代碼這個(gè)主要把解釋執(zhí)行的高級(jí)語(yǔ)言,例如java,php直接編譯成為平臺(tái)相關(guān)的目標(biāo)代碼,匯編代碼。在java里面,比較著名的就是即時(shí)編譯器(jit),其他的語(yǔ)言也要類似的機(jī)制。這里面主要節(jié)省了就是解釋執(zhí)行代碼的時(shí)間。這個(gè)會(huì)增加即時(shí)編譯的時(shí)間。3 利用反向代理服務(wù)器的緩存利用類似nginx的反向代理服務(wù)器,對(duì)請(qǐng)求的url對(duì)應(yīng)的輸出的進(jìn)行緩存。這個(gè)緩存和應(yīng)用程序?qū)崿F(xiàn)的動(dòng)態(tài)頁(yè)面緩存類似,只不過(guò)用反向代理充當(dāng)了應(yīng)用程序的緩存實(shí)現(xiàn)。主要節(jié)省了動(dòng)態(tài)余元執(zhí)行時(shí)間和數(shù)據(jù)庫(kù)訪問(wèn)時(shí)間。4 客戶端瀏覽器緩存客戶端瀏覽器緩存主要是通過(guò)在http頭部增加last-modified,if-modified-since,expires,cache-control等標(biāo)識(shí),和服務(wù)器進(jìn)行協(xié)商,是否是采用客戶的本機(jī)緩存來(lái)實(shí)現(xiàn)。其中這里面也會(huì)分為三種方式1 通過(guò)last-modified,if-modified-since方式和服務(wù)器通信,客戶發(fā)出http請(qǐng)求中包含if-modified-since,如果服務(wù)器端代碼沒(méi)有修改,服務(wù)器端返回302響應(yīng)代碼的請(qǐng)求響應(yīng)頭(內(nèi)容不返回)客戶端則直接用本機(jī)緩存的內(nèi)容緩存顯示結(jié)果。相當(dāng)于節(jié)省了服務(wù)器執(zhí)行代碼時(shí)間以及數(shù)據(jù)傳輸時(shí)間。2 通過(guò)expires,cache-control控制,客戶端發(fā)現(xiàn)如果上次請(qǐng)求的頁(yè)面還未過(guò)期,通過(guò)expires或者cache-control進(jìn)行辨別,則直接顯示本機(jī)緩存的內(nèi)容,不與服務(wù)器進(jìn)行通信??偨Y(jié)一下:1 一般的高并發(fā)的應(yīng)用程序,都在web層采用了以上幾種緩存,一般靜態(tài)資源(圖片,js,css)都會(huì)采用nginx反向代理+客戶端緩存來(lái)實(shí)現(xiàn)。 2 對(duì)于門戶網(wǎng)站,尤其是首頁(yè)的新聞,一般都會(huì)緩存起來(lái),可以通過(guò)反向代理也可以通過(guò)應(yīng)用程序緩存實(shí)現(xiàn)方式 3 對(duì)于下載或者視頻網(wǎng)站,由于數(shù)據(jù)傳輸比較大,直接采用瀏覽器本地緩存實(shí)現(xiàn)。
本文題目:aspnet如何使用緩存,ASPNET輸出頁(yè)面緩存方法
URL分享:
http://weahome.cn/article/ioidsj.html