Gewusst wie: Zwischenspeichern verschiedener Versionen einer Seite nach HTML-Headerwerten

Aktualisiert: November 2007

ASP.NET bietet die Möglichkeit, bei unterschiedlichen HTTP-Headerwerten mehrere Versionen einer Seite zwischenzuspeichern. Sie können festlegen, ob nur einer, mehrere oder alle Header, die bei der Anforderung der Seite an die Anwendung übergeben werden, für die Zwischenspeicherung relevant sein sollen.

So werden verschiedene Seitenversionen nach HTTP-Headerwerten deklarativ zwischengespeichert

  1. Fügen Sie der ASP.NET-Seite eine @ OutputCache-Direktive mit den erforderlichen Attributen Duration und VaryByParam oder VaryByControl hinzu. Das Duration-Attribut muss auf eine ganze Zahl größer 0 festgelegt werden. Wenn Sie nur nach HTTP-Headerwerten zwischenspeichern möchten, legen Sie das VaryByParam-Attribut auf "Keine" fest.

  2. Fügen Sie der @ OutputCache-Direktive ein VaryByHeader-Attribut hinzu, und legen Sie den Wert des Attributs auf den Namen des HTTP-Headers fest, anhand dessen Sie den Cacheinhalt variieren möchten.

    Im folgenden Beispiel wird eine Seite für 60 Sekunden zwischengespeichert, wobei Unterschiede im übergebenen HTTP-Accept-Language-Header das Erstellen einer neuen Version veranlassen:

    <%@ OutputCache Duration="60" VaryByParam="None" VaryByHeader="Accept-Language" %>
    
    Hinweis:

    Wenn die zwischengespeicherten Inhalte durch mehrere Header variiert werden sollen, fügen Sie eine durch Semikolons (;) getrennte Liste von Headernamen ein. Wenn die zwischengespeicherten Inhalte durch alle Header variiert werden sollen, legen Sie für das VaryByHeader-Attribut ein Sternchen (*) fest.

So werden verschiedene Seitenversionen nach HTTP-Headerwerten programmgesteuert zwischengespeichert

  1. Rufen Sie in der Page_Load-Methode für die Cache-Eigenschaft des Response-Objekts der Seite die SetCacheability-Methode und die SetExpires-Methode auf.

  2. Legen Sie den Wert für den HTTP-Header in der VaryByHeaders-Eigenschaft auf true fest.

    Das folgende Codebeispiel zeigt, wie eine Seite anhand unterschiedlicher HTTP-Accept-Language-Headerwerte in verschiedenen Versionen eine Minute lang zwischengespeichert wird.

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.Cache.SetExpires(DateTime.Now.AddMinutes(1d));
        Response.Cache.SetCacheability(HttpCacheability.Public);
        Response.Cache.SetValidUntilExpires(true);
        Response.Cache.VaryByHeaders["Accept-Language"] = true;
    }
    
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Response.Cache.SetExpires(DateTime.Now.AddMinutes(1.0))
        Response.Cache.SetCacheability(HttpCacheability.Public)
        Response.Cache.SetValidUntilExpires(True)
        Response.Cache.VaryByHeaders("Accept-Language") = true
    End Sub
    
    Hinweis:

    Wenn Sie die zwischengespeicherten Inhalte durch mehrere Header variieren möchten, müssen Sie in der VaryByHeaders-Eigenschaft mehrere Werte festlegen. Wenn Sie durch alle Header variieren möchten, legen Sie VaryByHeaders["VaryByUnspecifiedParameters"] auf true fest.

Siehe auch

Aufgaben

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

Gewusst wie: Programmgesteuertes Festlegen der Cachefähigkeit einer Seite

Gewusst wie: Zwischenspeichern von Versionen einer Seite mithilfe des anfordernden Browsers

Gewusst wie: Zwischenspeichern von Versionen einer Seite mithilfe von Parametern

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

Konzepte

Zwischenspeichern von ASP.NET-Seiten

Festlegen der Cachefähigkeit einer Seite

Zwischenspeichern mehrerer Versionen einer Seite