今天就跟大家聊聊有關(guān)怎么進(jìn)行ASP.NET頁(yè)面輸出緩存,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
我們提供的服務(wù)有:成都網(wǎng)站制作、做網(wǎng)站、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、觀(guān)山湖ssl等。為1000多家企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢(xún)和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的觀(guān)山湖網(wǎng)站制作公司
最近因項(xiàng)目要求,需要研究ASP.NET緩存,可是查閱了書(shū)本,msdn,網(wǎng)上后有點(diǎn)失望,真是天下文章一大抄啊,大家講來(lái)講去都是那么幾點(diǎn),沒(méi)有條理,沒(méi)有重點(diǎn),也沒(méi)有心得,所以我決定自己來(lái)寫(xiě)一篇,當(dāng)然,我是沒(méi)有能力來(lái)改變這一現(xiàn)象的,只是寫(xiě)來(lái)自己備忘罷了。
首先有幾點(diǎn)要說(shuō)明:
1.個(gè)人認(rèn)為緩存只有兩種:ASP.NET頁(yè)面輸出緩存與應(yīng)用程序數(shù)據(jù)緩存。一般大家也是這么認(rèn)為的,但是有另外一部份人卻把這兩個(gè)部份分了又分,搞出三五種出來(lái)。這就讓人感覺(jué)很多余了。
2.所謂控件緩存,其實(shí)是用戶(hù)控件緩存??赡苁俏依斫庥袉?wèn)題,我一開(kāi)始還以為那種html控件,web控件也可以進(jìn)行緩存的。所以說(shuō)定義名稱(chēng)要定義清楚。
3.實(shí)現(xiàn)緩存有兩種方式:在aspx頁(yè)面的頂部寫(xiě)頁(yè)處理指令或者在cs代碼里寫(xiě)代碼(又叫緩存API),一種是靜態(tài)設(shè)置,一各是動(dòng)態(tài)設(shè)置。網(wǎng)上總有些人喜歡說(shuō)來(lái)說(shuō)去又不總結(jié)清楚,搞的人很煩。
4.實(shí)際上只要用到了緩存就一定有緩存依賴(lài)。只是有些不那么明顯。在我看的文章里一般都把緩存依賴(lài)單獨(dú)作為一章講解,這是好事,因?yàn)樵诰彺娴母呒?jí)技術(shù)里緩存依賴(lài)是很重要的,但這并不代表有些緩存就沒(méi)有緩存依賴(lài)。
好了,下面言歸正傳。我只講常用的東東。
ASP.NET頁(yè)面輸出緩存。其實(shí)用戶(hù)控件緩存跟它沒(méi)有大的區(qū)別,只有一個(gè)location不能使用,在這里就一并講了吧。
page指令:
<%@ OutputCache Duration="10" VaryByParam="*" VaryByControl="txtInput" %>
OutputCache是指令名。Duration是緩存時(shí)長(zhǎng),單位是秒。VaryByParam是跟據(jù)什么進(jìn)行緩存。有兩個(gè)特殊的值:none表示不隨任何參數(shù)的不同而緩存,就是只緩存一個(gè)版本,表示隨任何參數(shù)的不同而緩存,表示只要參數(shù)發(fā)生變化,就緩存一個(gè)新版本。VaryByControl是跟據(jù)控件名進(jìn)行緩存。這里的控件是指一般的服務(wù)器控件,不能是用戶(hù)控件,不然會(huì)出現(xiàn)意想不到的結(jié)果。
緩存API:
雖然ASP.NET頁(yè)面輸出緩存與用戶(hù)控件緩存在頁(yè)面指令方面差不多,但在api上面有所區(qū)別
頁(yè)面緩存api:
映射的是System.Web.HttpCachePolicy類(lèi)。
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetExpires(DateTime.Now.AddSeconds(3));
***句對(duì)應(yīng)的是Location,是說(shuō)緩存在哪,public是哪里都緩存,nocache是都不緩存,private是客戶(hù)端緩存,還有其它幾個(gè)選項(xiàng)。比較關(guān)注的是:客戶(hù)端,代理服務(wù)器,服務(wù)器。
第二句對(duì)應(yīng)的是Duration,是說(shuō)緩存時(shí)長(zhǎng),這是個(gè)絕對(duì)時(shí)間,是說(shuō)到了那個(gè)時(shí)就是取消緩存。Response.Cache.VaryByParams["none"] = true;
對(duì)應(yīng)的是VaryByParam用中括號(hào)括起參數(shù),中間可用分號(hào)分隔多個(gè)參數(shù),true表示啟用此參數(shù)。沒(méi)有對(duì)應(yīng)VaryByControl的。
Response.Cache.SetSlidingExpiration(true);
當(dāng)用了這一句的時(shí)候,所有緩存設(shè)置都不啟作用了,原因是這個(gè)屬性是用給代理服務(wù)器之類(lèi)的處于瀏覽器和Web服務(wù)器之間的緩存使用的,而不是給Web服務(wù)器本身的.是特意設(shè)計(jì)成這樣的.Response.Cache.SetNoServerCaching(),表示取消當(dāng)前所有服務(wù)器緩存。
看完上述內(nèi)容,你們對(duì)怎么進(jìn)行ASP.NET頁(yè)面輸出緩存有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。
網(wǎng)站欄目:怎么進(jìn)行ASP.NET頁(yè)面輸出緩存
路徑分享:http://jinyejixie.com/article6/gdjsog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App開(kāi)發(fā)、電子商務(wù)、網(wǎng)站營(yíng)銷(xiāo)、靜態(tài)網(wǎng)站、建站公司、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)