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

Mise à jour : novembre 2007

Il peut arriver que vous souhaitiez supprimer une page du cache de sortie lorsqu'un autre élément du cache est supprimé. Prenons l'exemple d'une page qui affiche un rapport sollicitant de nombreux processus, placé dans le cache d'application et utilisé par plusieurs pages. Lorsque le rapport est modifié ou supprimé du cache, vous souhaitez que la sortie de page soit également supprimée du cache car le rapport n'est plus valide. Pour cela, vous pouvez rendre la sortie de page mise en cache dépendante d'autres éléments mis en cache.

Remarque :

Vous pouvez supprimer explicitement toute page du cache de sortie en appelant la méthode RemoveOutputCacheItem. Cela peut être fait à partir du fichier Global.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 autre élément du cache

  1. Dans une page, spécifiez des paramètres de cache 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 AddCacheItemDependency. Comme paramètre cacheKey, passez le nom de l'élément du cache sur lequel créer une dépendance.

    L'exemple de code suivant montre comment définir une dépendance sur l'élément nommé ProcessIntensiveReport. Lorsque cet élément est modifié ou supprimé, la sortie de page sera supprimée du cache.

    protected void Page_Load(object sender, EventArgs e)
    {
        Response.AddCacheItemDependency("ProcessIntensiveReport");
    
        // 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 System.EventArgs) Handles Me.Load
        Response.AddCacheItemDependency("ProcessIntensiveReport")
    
        ' 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 appeler la méthode AddCacheItemDependency dans un contrôle utilisateur ASP.NET. Toutefois, vous pouvez créer un objet CacheDependency qui décrit la dépendance de clé de cache et l'assigner à la propriété Dependency de l'objet UserControl dans tout contrôle utilisateur qui spécifie la directive @ OutputCache.

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