Freigeben über


Gewusst wie: Zwischenspeichern der Seitenausgabe mit Dateiabhängigkeiten

Aktualisiert: November 2007

Gelegentlich möchten Sie vielleicht eine Seite aus dem Ausgabecache entfernen, wenn sich eine Datei geändert hat. Nehmen wir z. B. an, dass Sie mit einer Seite arbeiten, deren Inhalt auf Grundlage eines aufwendig zu erstellenden Berichts zusammengestellt wird, der als Ausgabe eine XML-Datei liefert. Die Seite muss nur dann überarbeitet werden, wenn sich die XML-Datei ändert. Damit diese erneute Verarbeitung nur stattfindet, wenn es auch erforderlich ist, können Sie die Cacherichtlinie der Seite von einer einzelnen Datei abhängig machen. Bei Bedarf können Sie die zwischengespeicherte Seite auch von mehr als einer Datei abhängig machen.

Hinweis:

Sie können jede Seite explizit aus dem Ausgabecache entfernen, indem Sie die RemoveOutputCacheItem-Methode aufrufen. Den Anforderungen der jeweiligen Anwendung entsprechend kann dies in der Datei Global.asax, in einem benutzerdefinierten ASP.NET-Serversteuerelement oder in einer Seite erfolgen.

So stellen Sie eine Abhängigkeit zwischen der Seitenausgabe im Cache und einer Datei her

  1. Legen Sie die Einstellungen zum Zwischenspeichern der Seitenausgabe entweder deklarativ oder programmgesteuert fest. Weitere Informationen finden Sie unter Gewusst wie: Festlegen von Ablaufzeitpunkten für das Zwischenspeichern von ASP.NET-Seiten, Festlegen der Cachefähigkeit einer Seite und Zwischenspeichern mehrerer Versionen einer Seite.

  2. Rufen Sie im Seitencode die AddFileDependency-Methode auf. Übergeben Sie als filename-Parameter der Methode den Pfad der Datei, für die Sie eine Abhängigkeit erstellen möchten.

    Das folgende Codebeispiel legt eine Dateiabhängigkeit für die Datei TextFile1.txt fest. Wenn sich die Datei ändert, wird die Seitenausgabe aus dem Cache entfernt.

    protected void Page_Load(object sender, EventArgs e)
    {
        string fileDependencyPath = Server.MapPath("TextFile1.txt");
        Response.AddFileDependency(fileDependencyPath);
    
        // Set additional properties to enable caching.
        Response.Cache.SetExpires(DateTime.Now.AddSeconds(60));
        Response.Cache.SetCacheability(HttpCacheability.Public);
        Response.Cache.SetValidUntilExpires(true);
    }
    
    Protected Sub Page_Load(ByVal sender As Object, _
            ByVal e As EventArgs) Handles Me.Load
        Dim fileDependencyPath As String = _
            Server.MapPath("TextFile1.txt")
        Response.AddFileDependency(fileDependencyPath)
    
        ' Set additional properties to enable caching.
        Response.Cache.SetExpires(DateTime.Now.AddSeconds(60))
        Response.Cache.SetCacheability(HttpCacheability.Public)
        Response.Cache.SetValidUntilExpires(True)
    End Sub
    
    Hinweis:

    Sie können diese Methoden nicht von einem ASP.NET-Benutzersteuerelement aus verwenden. Trotzdem können Sie in jedem Benutzersteuerelement, das die @ OutputCache-Direktive angibt, eine Dateiabhängigkeit erstellen und der Dependency-Eigenschaft zuweisen.

So stellen Sie eine Abhängigkeit zwischen der Ausgabe zwischengespeicherter Seiten und einer Gruppe von Dateien her

  1. Legen Sie die Einstellungen zum Zwischenspeichern der Seitenausgabe entweder deklarativ oder programmgesteuert fest. Weitere Informationen finden Sie unter Gewusst wie: Festlegen von Ablaufzeitpunkten für das Zwischenspeichern von ASP.NET-Seiten, Festlegen der Cachefähigkeit einer Seite und Zwischenspeichern mehrerer Versionen einer Seite.

  2. Erstellen Sie im Seitencode ein String-Array oder eine ArrayList, die die Pfade der Dateien enthält, von der Sie die Seite abhängig machen möchten.

  3. Rufen Sie die AddFileDependencies-Methode auf, und übergeben Sie das Array als filenames-Parameter.

    Im folgenden Codebeispiel wird ein Zeichenfolgearray mit den Dateipfaden der Dateien TextFile1.txt und XMLFile1.xml erstellt, und die Seitenausgabe wird von den beiden Dateien abhängig gemacht. Wenn eine der beiden Dateien geändert wird, wird die Seitenausgabe aus dem Cache entfernt.

    protected void Page_Load(object sender, EventArgs e)
    {
        string[] fileDependencies;
        string fileDependency1 = Server.MapPath("TextFile1.txt");
        string fileDependency2 = Server.MapPath("XMLFile1.xml");
        fileDependencies = new String[] { fileDependency1, 
            fileDependency2 };
        Response.AddFileDependencies(fileDependencies);
    }
    
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Dim fileDependencies() As String
        Dim fileDependency1 As String = Server.MapPath("TextFile1.txt")
        Dim fileDependency2 As String = Server.MapPath("XMLFile1.xml")
        fileDependencies = New String() {fileDependency1, _
            fileDependency2}
        Response.AddFileDependencies(fileDependencies)
    End Sub
    

Siehe auch

Aufgaben

Gewusst wie: Programmgesteuertes Festlegen der Cachefähigkeit einer Seite

Konzepte

Zwischenspeichern von ASP.NET-Seiten

Festlegen der Cachefähigkeit einer Seite