首页 博文

OutputCache 缓存 VaryByCustom的使用,增加缓存后手机端无法做判断的处理

2015-10-8 14:53:01 网络 A+

<%@ OutputCache Duration="10" VaryByParam="none" VaryByCustom="browser" %>

然后global.asax中加入

public override string GetVaryByCustomString(HttpContext context, string arg)
{
    if (arg == "browser")
    {
        string browserName = context.Request.Browser.Browser;
        browserName += context.Request.Browser.MajorVersion.ToString();
        return browserName;
    }
    else
    {
        return base.GetVaryByCustomString(context, arg);
    }
}

如果页面上增加OutputCache缓存的话,那么在cs中判断手机端就无法转向,所以必须通过VaryByCustom来判断参数进行控制

globaby.asax中判断手机端的修改如下:

public override string GetVaryByCustomString(HttpContext context, string arg)
    {
    if (arg == "browser")
    {
        //判断手机端
string UserAgent = context.Request.ServerVariables["HTTP_USER_AGENT"];
string isMobile = Regex.IsMatch(UserAgent, @"(iPhone|Android)", RegexOptions.IgnoreCase).ToString();

        return isMobile;
    }
    else
    {
        return base.GetVaryByCustomString(context, arg);
    }

这样对于PC端和手机端会启用2种缓存。

上一篇: OutputCache各参数的说明
下一篇: MySQL 百万级分页优化(Mysql千万级分页)
相关文章