注意:@OutputCache指令与必需的Duration和VaryByParam属性包括在一起。必须将Duration属性设置为大于零的任意整数。如果不想" />

代码阅读总结之Fitch and Mather 7.0(自定义字

系统 1213 0

前段时间工作比较忙 ,没时间读代码,这几天有空,正好又来静读代码了.

Menus_ascx中我们看到用了缓存自定义字符串"authenticated"

<%@ OutputCache Duration="86400" VaryByParam="None" VaryByCustom="authenticated" %>
注意 :
@OutputCache 指令与必需的 Duration 和 VaryByParam 属性包括在一起。必须将 Duration 属性设置为大于零的任意整数。如果不想使用 VaryByParam 属性提供的功能,请将其值设置为 None


 

Global.asax 文件中重写 GetVaryByCustomString 方法

此处是根据用户是否验证来缓存用户控件 , 即一个通过验证的用户控件 , 一个未验证的用户控件

 1 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         }

 

根据此思路我们可以开发一个依浏览器类型不同的缓存页面的例子

例如我们现有页面 WebForm3.aspx,我们可以根据访问着的浏览器类型来做页面缓存

首先在页面中加入

<%@ OutputCache Duration="600" VaryByParam="none" VaryByCustom="ietype" %>

如果定义了自定义字符串,必须在应用程序的 Global.asax 文件中重写 HttpApplication.GetVaryByCustomString 方法

 

 1 public   override   string  GetVaryByCustomString(HttpContext context,  string  custom)
 2          {
 3              string  browserType = context.Request.Browser.Type;
 4
 5              // custom自定义字符串,它指定哪个缓存的响应被用于响应当前请求
 6              // 有可能多个页面都定义了自定义字符串,这时可以依靠参数custom来具体区分
 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         }

 

这样设置好后 ,

当我用 IE6访问页面WebForm3.aspx时,服务器缓存这个类型浏览器的页面600秒

当我再用 Opera7.54 访问页面 WebForm3.aspx时,服务器又缓存这个类型浏览器的页面600秒

代码阅读总结之Fitch and Mather 7.0(自定义字符串缓存页)


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论