前段時(shí)間工作比較忙
,沒時(shí)間讀代碼,這幾天有空,正好又來靜讀代碼了.
在
Menus_ascx中我們看到用了緩存自定義字符串"authenticated"
<%@ OutputCache Duration="86400" VaryByParam="None" VaryByCustom="authenticated" %>
注意
:
@OutputCache 指令與必需的 Duration 和 VaryByParam 屬性包括在一起。必須將 Duration 屬性設(shè)置為大于零的任意整數(shù)。如果不想使用 VaryByParam 屬性提供的功能,請(qǐng)將其值設(shè)置為 None
?
在 Global.asax 文件中重寫 GetVaryByCustomString 方法
此處是根據(jù)用戶是否驗(yàn)證來緩存用戶控件
,
即一個(gè)通過驗(yàn)證的用戶控件
,
一個(gè)未驗(yàn)證的用戶控件
public
?
override
?
string
?GetVaryByCustomString(HttpContext?context,?
string
?custom)
?2
????????
{
?3
????????
//
?There?are?two?different?possible?caching?cases?here?so?we?return?a?different?string?in?each?one.
?4
????????
if
(context.Request.IsAuthenticated)
?5
????????????
{
?6
????????????
//
?Request?is?authenticated
?7
????????????
return
?
"
B
"
;
?8
????????????}
????????????????????????????????
?9
????????
else
10
????????????
{
11
????????????
//
?Request?is?not?authenticated
12
????????????
return
?
"
C
"
;
13
????????????}
????????????
14
????????}
?
根據(jù)此思路我們可以開發(fā)一個(gè)依瀏覽器類型不同的緩存頁(yè)面的例子
例如我們現(xiàn)有頁(yè)面 WebForm3.aspx,我們可以根據(jù)訪問著的瀏覽器類型來做頁(yè)面緩存
首先在頁(yè)面中加入
<%@ OutputCache Duration="600" VaryByParam="none" VaryByCustom="ietype" %>
如果定義了自定義字符串,必須在應(yīng)用程序的 Global.asax 文件中重寫 HttpApplication.GetVaryByCustomString 方法
?
public
?
override
?
string
?GetVaryByCustomString(HttpContext?context,?
string
?custom)
?2
????????
{
?3
????????????
string
?browserType
=
context.Request.Browser.Type;
?4
?5
????????????
//
custom自定義字符串,它指定哪個(gè)緩存的響應(yīng)被用于響應(yīng)當(dāng)前請(qǐng)求
?6
????????????
//
有可能多個(gè)頁(yè)面都定義了自定義字符串,這時(shí)可以依靠參數(shù)custom來具體區(qū)分
?7
????????????
if
?(?custom
==
"
ietype
"
?)
?8
????????????????
if
?(?browserType
==
"
IE6
"
?)
?9
????????????????????
//
IE6瀏覽器返回字符
10
????????????????????
return
?browserType;
11
????????????????
else
12
????????????????????
if
?(?browserType
==
"
Opera7
"
?)
13
????????????????????????
//
Opera7瀏覽器返回字符
14
????????????????????????
return
?browserType;
15
????????????????????
else
16
????????????????????????
//
其他類型的瀏覽器返回字符
17
????????????????????????
return
?browserType;
18
????????????????
19
????????????
return
?browserType;
20
????????}
?
這樣設(shè)置好后 ,
當(dāng)我用 IE6訪問頁(yè)面WebForm3.aspx時(shí),服務(wù)器緩存這個(gè)類型瀏覽器的頁(yè)面600秒
當(dāng)我再用 Opera7.54 訪問頁(yè)面 WebForm3.aspx時(shí),服務(wù)器又緩存這個(gè)類型瀏覽器的頁(yè)面600秒
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元


????????
????????????