Partager via


Comment : mettre en cache la sortie de page avec des dépendances de fichier

Mise à jour : novembre 2007

Il peut arriver parfois que vous souhaitiez supprimer une page du cache de sortie lors de la modification d'un fichier. Prenons l'exemple d'une page qui obtient son contenu d'un rapport faisant intervenir de nombreux processus et générant un fichier XML en sortie. La page doit uniquement faire l'objet d'un nouveau traitement si le fichier XML change. Pour limiter la réexécution du traitement au strict nécessaire, vous pouvez rendre la stratégie de cache de la page dépendante d'un seul fichier. Si besoin est, vous pouvez faire en sorte que la page mise en cache dépende de plusieurs fichiers.

Remarque :

Vous pouvez supprimer explicitement toute page du cache de sortie en appelant la méthode RemoveOutputCacheItem. Cela peut être fait à partir du fichier gGobal.asax, d'un contrôle de serveur ASP.NET personnalisé ou d'une page, selon les besoins de votre application.

Pour rendre une sortie de page mise en cache dépendante d'un fichier

  1. Spécifiez les paramètres de mise en cache de la sortie de la page, de façon déclarative ou par programme. Pour plus d'informations, consultez Comment : définir des valeurs d'expiration pour la mise en cache de page ASP.NET, Définition de la capacité d'une page à être mise en cache et Mise en cache de plusieurs versions d'une page.

  2. Dans le code de la page, appelez la méthode AddFileDependency. Comme paramètre filename de la méthode, passez le chemin d'accès du fichier sur lequel vous créez une dépendance.

    L'exemple de code suivant définit une dépendance sur le fichier TextFile1.txt. Lorsque le fichier change, la sortie de page sera supprimée du cache.

    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
    
    Remarque :

    Vous ne pouvez pas utiliser ces méthodes à partir d'un contrôle utilisateur ASP.NET. Toutefois, dans tout contrôle utilisateur qui spécifie la directive @ OutputCache, vous pouvez créer une dépendance de fichier et l'assigner à la propriété Dependency.

Pour rendre une sortie de page mise en cache dépendante d'un groupe de fichiers

  1. Spécifiez les paramètres de mise en cache de la sortie de la page, de façon déclarative ou par programme. Pour plus d'informations, consultez Comment : définir des valeurs d'expiration pour la mise en cache de page ASP.NET, Définition de la capacité d'une page à être mise en cache et Mise en cache de plusieurs versions d'une page.

  2. Dans le code de la page, créez un tableau String ou ArrayList qui contient les chemins d'accès des fichiers dont la page doit dépendre.

  3. Appelez la méthode AddFileDependencies et passez le tableau en tant que paramètre filenames.

    L'exemple de code suivant crée un tableau de chaînes spécifiant les chemins d'accès des fichiers TextFile1.txt et XMLFile1.xml et fait dépendre la sortie de page de deux fichiers. Si l'un des fichiers est modifié, la sortie de page sera supprimée du cache.

    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
    

Voir aussi

Tâches

Comment : définir la capacité de mise en cache d'une page par programme

Concepts

Mise en cache de pages ASP.NET

Définition de la capacité d'une page à être mise en cache