高清国产av一区二区三区_亚洲欧美日韩在线_无码熟妇人妻av在线影片免费_在线无码一级伊伊_爽好舒服高H自慰软件_亚洲熟女区偷拍区高清区_午夜福利影院啪啪_亚洲国产黄片在线播放_中文字幕日韩精品乐乐影院_久久国产亚洲日韩欧美精品

掃描二維碼關(guān)注

首頁(yè) APP開(kāi)發(fā)小程序開(kāi)發(fā) 微信公眾號(hào) 網(wǎng)站建設(shè) 營(yíng)銷推廣 經(jīng)典案列 產(chǎn)品服務(wù) 關(guān)于我們

“學(xué)習(xí)不僅是掌握知識(shí)”

向書(shū)本學(xué)習(xí),還要向?qū)嵺`學(xué)習(xí)、向生活學(xué)習(xí)。消化已有知識(shí),
而且要力求有所發(fā)現(xiàn)、有所發(fā)明、有所創(chuàng)造

ASP.NET緩存策略

2019/3/25 9:28:55

ASP.NET緩存策略

要提升ASP.NET應(yīng)用程序的性能,最簡(jiǎn)單、最有效的方式就是使用內(nèi)建的緩存引擎。雖然也能構(gòu)建自己的緩存,但由于緩存引擎已提供了如此多的功能,所以完全不必如此麻煩。在很大程度上,ASP.NET開(kāi)發(fā)者在Web應(yīng)用程序中,能將緩存引擎的功能直接包裝到自己的數(shù)據(jù)表示及訪問(wèn)類中。如本文所述,整個(gè)過(guò)程其實(shí)非常簡(jiǎn)單。
ASP.NET的緩存引擎支持三種類型的緩存:
整頁(yè)輸出緩存是在一個(gè)頁(yè)被首次請(qǐng)求時(shí),將整個(gè)頁(yè)呈現(xiàn)好的HTML內(nèi)容緩存下來(lái)。后續(xù)請(qǐng)求將直接取用緩存拷貝。
部分緩存是指緩存一部分HTML內(nèi)容,這類似一個(gè)Web用戶控件的輸出。之所以叫這樣的一個(gè)名字,是因?yàn)槲覀円话阏f(shuō)“將一部分HTML提交給一個(gè)頁(yè)”。
數(shù)據(jù)緩存關(guān)注的是單獨(dú)的變量或數(shù)據(jù)項(xiàng)的緩存。它在比以上兩種緩存類型都要低的一個(gè)級(jí)別上工作。
整頁(yè)輸出緩存
整頁(yè)輸出緩存是最簡(jiǎn)單的緩存類型,它只要求為準(zhǔn)備緩存的頁(yè)添加一個(gè)預(yù)處理指令OutputCache。使用這種緩存,就不必重新處理一個(gè)頁(yè)的Init,Load,PreRender,Render以及Unload事件。假如那些事件要訪問(wèn)像數(shù)據(jù)庫(kù)那樣的一個(gè)后端系統(tǒng),那么節(jié)省的時(shí)間將是非??捎^的。ASP.NET可緩存一個(gè)頁(yè)的幾個(gè)變體,并將每個(gè)頁(yè)都與后續(xù)請(qǐng)求相關(guān)聯(lián)。所有這些都由OutputCache預(yù)處理指令來(lái)控制,該命令要放在一個(gè)ASPX頁(yè)的頂部,并采用以下格式:
<%@ OutputCache
Duration="#ofseconds"
Location="Any | Client | Downstream | Server | None"
VaryByCustom="browser | customstring"
VaryByHeader="headers"
VaryByParam="parameter name" %>
OutputCache預(yù)處理指令最多可利用5個(gè)相關(guān)的屬性來(lái)控制緩存行為。表A總結(jié)了這些屬性及其含義。表A屬性 說(shuō)明
Duration 該屬性指定了網(wǎng)頁(yè)要緩存的時(shí)間(以秒為單位)。通過(guò)為一個(gè)頁(yè)設(shè)置該屬性,可為來(lái)自對(duì)象HTTP響應(yīng)建立一個(gè)過(guò)期策略。這是一個(gè)必需屬性。如果不包括它,會(huì)發(fā)生解析器錯(cuò)誤。注意它指定的是絕對(duì)過(guò)期時(shí)間,而非周期性過(guò)期。
Location 用這個(gè)屬性指示W(wǎng)eb服務(wù)器和下游設(shè)備(比如代理服務(wù)器和瀏覽器)來(lái)緩存頁(yè)面內(nèi)容。默認(rèn)為Any,該屬性并非必需的。
VaryByParam 該屬性使用由分號(hào)分隔的字符串列表來(lái)改變輸出緩存。默認(rèn)情況下,這些字符串對(duì)應(yīng)于隨GET方法屬性發(fā)送的查詢字符串值,或?qū)?yīng)于使用POST方法發(fā)送的一個(gè)參數(shù)。如果將該屬性設(shè)為多個(gè)參數(shù),輸出緩存將針對(duì)指定的每個(gè)參數(shù),包含所請(qǐng)求的文檔的一個(gè)不同版本。可能的值包括None、*以及任何有效的查詢字符串或POST參數(shù)名。如果沒(méi)有設(shè)置其他屬性,該屬性就是必需的。
VaryByCustom 對(duì)自定義輸出緩存需求進(jìn)行表示的任何文本都要包含在這個(gè)屬性中。如果為屬性指派瀏覽器的一個(gè)值,緩存會(huì)根據(jù)瀏覽器名稱及主版本信息而發(fā)生變化。如果輸入一個(gè)自定義字符串,就必須在應(yīng)用程序的Global.asax文件中覆蓋GetVaryByCustomString方法。
VaryByHeader 該屬性使用由分號(hào)分隔的HTTP標(biāo)頭列表來(lái)改變輸出緩存。如果屬性設(shè)為多個(gè)標(biāo)頭,輸出緩存將針對(duì)指定的每個(gè)標(biāo)頭,包含所請(qǐng)求文檔的一個(gè)不同的版本。OutputCache屬性
OutputCache預(yù)處理指令可在內(nèi)存中方便地創(chuàng)建靜態(tài)頁(yè)的單一版本,例如:
<%@ OutputCache Duration=“300" VaryByParam="None" %>
還可根據(jù)id查詢字符串參數(shù)來(lái)緩存多個(gè)版本,例如:
<%@ OutputCache Duration=“300" VaryByParam="id" %>
在上述兩個(gè)例子中,網(wǎng)頁(yè)會(huì)在5分鐘(300秒)后從緩存中清除,該數(shù)字是由Duration屬性指定的。根據(jù)自定義信息來(lái)緩存
使用VaryByCustom屬性,可根據(jù)您提供的自定義信息來(lái)創(chuàng)建一個(gè)頁(yè)的緩存版本。例如,要為每種類型的瀏覽器創(chuàng)建網(wǎng)頁(yè)的一個(gè)不同版本,可使用以下預(yù)處理指令:
<%@ OutputCache Duration=“300" VaryByParam="None" VaryByCustom=“browser”%>
使用VaryByCustom,還可根據(jù)應(yīng)用程序特有的信息來(lái)緩存網(wǎng)頁(yè)。例如,要根據(jù)當(dāng)前用戶的部門名稱來(lái)創(chuàng)建網(wǎng)頁(yè)的緩存版本,可使用以下預(yù)處理指令:
<%@ OutputCache Duration=“300" VaryByParam="None" VaryByCustom=“department”%>
然后,在用于Global.asax文件的代碼隱藏類中,可覆蓋GetVaryByCustomString方法,如以下VB.NET代碼所示:
Public Overrides Function GetVaryByCustomString( _
ByVal context As System.Web.HttpContext, _
ByVal custom As String) As String
If custom = "department" Then
' return the department for the current user
End If
End Function
這里向GetVaryByCustomString方法傳遞了在預(yù)處理指令中使用的自定義值。ASP.NET運(yùn)行庫(kù)


深圳市南山區(qū)南山街道南海大道西桂廟路北陽(yáng)光華藝大廈1棟4F、4G-04

咨詢電話:136 8237 6272
大客戶咨詢:139 0290 5075
業(yè)務(wù)QQ:195006118
技術(shù)QQ:179981967

精銳軟件

Copyright? 2018-2023 深圳精銳軟件技術(shù)有限公司 All Rights Reserved. ICP備案號(hào):粵ICP備18108116號(hào)-8 公安備案號(hào):粵公網(wǎng)安備44030502009460號(hào)