Partager via


Comment : mettre en cache des versions d'une page à l'aide de paramètres

Mise à jour : novembre 2007

Il arrive que vous souhaitiez mettre en cache une page, mais que celle-ci puisse générer une sortie différente en fonction de la valeur d'un paramètre de chaîne de requête ou de valeurs envoyées avec la page lors de la publication. Par exemple, si vous avez une page qui affiche les emplacements de magasins en fonction de l'état d'un utilisateur, la page peut accepter une valeur de la chaîne de requête « état » qui génère une version différente de la page pour chaque état.

Vous pouvez mettre en cache plusieurs versions de réponses de page selon les paramètres envoyés comme valeurs de chaîne de requête ou valeurs de publication du formulaire.

Remarque :

ASP.NET traite les valeurs de chaîne de requête ou les valeurs de publication du formulaire avec des paires clé/valeur identiques comme étant identiques pour la mise en cache, indépendamment de l'ordre dans lequel les paramètres sont passés. Cependant, pour des raisons liées au cache, les noms de paramètres respectent la casse et ASP.NET met en cache des versions de page différentes selon que les valeurs et les noms des paramètres sont en majuscules ou en minuscules.

Pour mettre en cache plusieurs versions de sortie de page de façon déclarative à l'aide de paramètres

  1. Dans la page ASP.NET, incluez une directive @ OutputCache avec un attribut Duration. L'attribut Duration est obligatoire et doit être défini sous forme d'un entier supérieur à zéro.

  2. Dans la directive @ OutputCache, incluez un attribut VaryByParam et définissez sa valeur avec le nom de la chaîne de requête ou du paramètre de publication du formulaire en fonction duquel vous souhaitez faire varier la page.

    L'exemple de code suivant met en cache la page pendant 60 secondes et spécifie que différentes versions de la sortie de page seront mises en cache selon la valeur de la chaîne de requête City ou du paramètre de publication du formulaire.

    <%@ OutputCache Duration="60" VaryByParam="City" %>
    
    Remarque :

    Si vous souhaitez que le cache de sortie varie en fonction de plusieurs paramètres, incluez une liste de noms de paramètres, séparés par des points-virgules (;). Si vous souhaitez que le cache varie en fonction de toutes les valeurs de paramètre, définissez l'attribut VaryByParam avec un astérisque (*). L'exemple de code suivant montre comment faire varier la sortie de page en fonction des paramètres City et ZipCode.

Pour mettre en cache plusieurs versions de sortie de page par programme à l'aide de paramètres

  1. Dans l'événement Page_Load de la page, appelez les méthodes SetCacheability et SetExpires sur la propriété Cache de l'objet Response.

  2. Spécifiez le nom de paramètre comme argument de la propriété VaryByParams de l'objet Response et définissez la propriété avec la valeur true.

    L'exemple de code suivant montre comment mettre en cache plusieurs versions d'une page lorsque les demandes arrivent au serveur avec des valeurs différentes pour le paramètre Zip.

    Response.Cache.SetExpires(DateTime.Now.AddMinutes(1.0));
    Response.Cache.SetCacheability(HttpCacheability.Public);
    Response.Cache.SetValidUntilExpires(true);
    Response.Cache.VaryByParams["Zip"] = true;
    
    Response.Cache.SetExpires(DateTime.Now.AddMinutes(1.0))
    Response.Cache.SetCacheability(HttpCacheability.Public)
    Response.Cache.SetValidUntilExpires(True)
    Response.Cache.VaryByParams("Zip") = True
    
    Remarque :

    Si vous souhaitez que le contenu varie en fonction de plusieurs paramètres, définissez la propriété VaryByParams plusieurs fois. Si vous souhaitez faire varier le contenu mis en cache en fonction de toutes les valeurs d'en-tête, affectez un astérisque (*) à l'attribut VaryByHeader. L'exemple de code suivant montre comment faire varier la sortie de page en fonction des paramètres City et Zip.

Voir aussi

Tâches

Comment : définir la capacité de mise en cache d'une page ASP.NET de manière déclarative

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

Comment : mettre en cache des versions d'une page à l'aide du navigateur qui effectue la demande

Comment : mettre en cache des versions d'une page à l'aide d'en-têtes HTTP

Comment : mettre en cache des versions d'une page à l'aide de chaînes personnalisées

Concepts

Mise en cache de pages ASP.NET

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

Mise en cache de plusieurs versions d'une page