Gewusst wie: Zwischenspeichern von Versionen einer Seite mithilfe von benutzerdefinierten Zeichenfolgen

Aktualisiert: November 2007

Es ist nicht nur möglich, den Ausgabecache je nach Browsertyp und Parameter zu variieren, Sie können auch mehrere Versionen der Seitenausgabe auf der Grundlage verschiedener Zeichenfolgen zwischenspeichern, die von einer von Ihnen definierten Methode zurückgegeben werden.

Wenn Sie Seiten auf der Grundlage benutzerdefinierter Zeichenfolgen zwischenspeichern, geben Sie zunächst einen Bezeichner für die zu verwendende benutzerdefinierte Zeichenfolge ein. Sie erstellen dann eine Methode in der Datei Global.asax der Anwendung, die den Bezeichner annimmt und einen Wert zurückgibt, durch den der Ausgabecache variiert wird.

So speichern Sie mehrere Versionen einer Seitenausgabe auf der Grundlage benutzerdefinierter Zeichenfolgen im Cache

  1. Fügen Sie der ASP.NET-Seite eine @ OutputCache-Direktive mit dem erforderlichen Duration-Attribut und dem erforderlichen VaryByParam-Attribut hinzu. Das Duration-Attribut muss auf eine ganze Zahl größer als 0 (null) festgelegt werden. Wenn Sie die vom VaryByParam-Attribut bereitgestellten Funktionen nicht verwenden möchten, legen Sie den Wert des Attributs auf "None" fest.

  2. Zum deklarativen Festlegen der benutzerdefinierten Zeichenfolge in der @ OutputCache-Direktive fügen Sie das VaryByCustom-Attribut hinzu, das auf die Zeichenfolge festgelegt ist, durch die der Ausgabecache variiert werden soll.

    In der folgenden Direktive wird die Seitenausgabe durch die benutzerdefinierte Zeichenfolge "minorversion" variiert.

    <%@ OutputCache Duration="10" VaryByParam="None" VaryByCustom="minorversion" %>
    
  3. Zum programmgesteuerten Festlegen der benutzerdefinierten Zeichenfolge rufen Sie dieSetVaryByCustom-Methode auf und übergeben sie an die zu verwendende benutzerdefinierte Zeichenfolge.

    Im folgenden Codebeispiel wird veranschaulicht, wie die benutzerdefinierte Zeichenfolge auf "minorversion" festgelegt wird.

    Response.Cache.SetVaryByCustom("minorversion");
    
    Response.Cache.SetVaryByCustom("minorversion")
    
    Hinweis:

    Beim Versuch, die benutzerdefinierte Zeichenfolge sowohl programmgesteuert als auch deklarativ festzulegen, tritt eine InvalidOperationException auf. Sie können nur eines dieser Verfahren anwenden.

  4. Überschreiben Sie in der Datei Global.asax der Anwendung die GetVaryByCustomString-Methode, um das Verhalten des Ausgabecaches für die benutzerdefinierte Zeichenfolge anzugeben.

    Als arg-Parameter akzeptiert die überschriebene Methode die imVaryByCustom-Attribut oder in der SetVaryByCustom-Methode festgelegte Zeichenfolge. Sie könnten beispielsweise Seiten verwenden, die von einer Nebenversion des anfordernden Browsers zwischengespeichert werden. Für diese Seiten kann das VaryByCustom-Attribut auf "minorversion" festgelegt werden. Sie können anschließend in der überschriebenen GetVaryByCustomString-Methode den arg-Parameter überprüfen und abhängig davon, ob der Wert des arg-Parameters "minorversion" ist, unterschiedliche Zeichenfolgen zurückgeben.

    Im folgenden Codebeispiel wird eine Global.asax-Datei mit einer Überschreibung der GetVaryByCustomString-Methode veranschaulicht.

    <%@ Application language="C#" %>
    <script >
    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 >
    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>
    

Siehe auch

Aufgaben

Gewusst wie: Deklaratives Festlegen der Cachefähigkeit einer ASP.NET-Seite

Konzepte

Zwischenspeichern von ASP.NET-Seiten

Festlegen der Cachefähigkeit einer Seite

Zwischenspeichern mehrerer Versionen einer Seite