Поделиться через


Практическое руководство. Кэширование версий страницы на основании пользовательских строк

Обновлен: Ноябрь 2007

Помимо изменения кэша вывода с использованием типа обозревателя и параметров можно кэшировать несколько версий выходных данных страницы на основании различных строковых значений, возвращаемых определенным методом.

При кэшировании страниц на основании пользовательских строк сначала необходимо указать идентификатор используемой строки. После этого в файле Global.asax приложения следует создать метод, принимающий идентификатор и возвращающий значение, на основании которого изменяется кэш вывода.

Кэширование нескольких версий выходных данных страницы на основании пользовательской строки

  1. На странице ASP.NET включите директиву @ OutputCache с обязательными атрибутами Duration и VaryByParam. Атрибут Duration должен иметь целое положительное значение. Если не требуется использовать функциональные возможности атрибута VaryByParam, установите для него значение «None».

  2. Чтобы декларативно задать пользовательскую строку, включите в директиву @ OutputCache атрибут VaryByCustom, строковое значение которого используется для изменения кэша вывода.

    Следующая директива используется для изменения выходных данных страницы в зависимости от значения строки «minorversion».

    <%@ OutputCache Duration="10" VaryByParam="None" VaryByCustom="minorversion" %>
    
  3. Чтобы задать значение пользовательской строки программными средствами, вызовите метод SetVaryByCustom и передайте в него соответствующую строку, которую необходимо использовать.

    В следующем примере показан порядок установки значения пользовательской строки «minorversion».

    Response.Cache.SetVaryByCustom("minorversion");
    
    Response.Cache.SetVaryByCustom("minorversion")
    
    5ecf4420.alert_note(ru-ru,VS.90).gifПримечание.

    Если значение пользовательской строки задается одновременно декларативно и программно, возникает исключение InvalidOperationException. В этом случае необходимо использовать один из этих способов.

  4. В файле Global.asax приложения переопределите метод GetVaryByCustomString и задайте в нем поведение кэша вывода для соответствующего значения пользовательской строки.

    В качестве параметра arg переопределенного метода принимается строка, заданная в атрибуте VaryByCustom или в методе SetVaryByCustom. Например, можно выполнять кэширование страниц по дополнительному номеру версии запрашивающего обозревателя. Для таких страниц атрибуту VaryByCustom можно присвоить значение «minorversion». Затем в переопределенном методе GetVaryByCustomString можно выполнить проверку значения параметра arg. В зависимости от значения параметра arg («minorversion» или другое) метод возвращает различные строки.

    В следующем примере показано содержимое файла Global.asax с переопределенным методом GetVaryByCustomString.

    <%@ Application language="C#" %>
    <script runat="server">
    public override string GetVaryByCustomString(HttpContext context, 
        string arg)
    {
        if(arg == "minorversion")
        {
            return "Version=" +
                context.Request.Browser.MinorVersion.ToString();
        }
        return base.GetVaryByCustomString(context, arg);
    }
    </script>
    
    <script runat="server">
    Public Overrides Function GetVaryByCustomString(context _
            As HttpContext, arg As String) As String
        If (arg = "minorversion") Then
            Return "Version=" & _
                context.Request.Browser.MinorVersion.ToString()
        return base.GetVaryByCustomString(context, arg);
    End Function
    </script>
    

См. также

Задачи

Практическое руководство. Декларативное задание возможности кэширования страницы ASP.NET

Основные понятия

Кэширование страниц ASP.NET

Задание возможности кэширования страницы

Кэширование нескольких версий страницы