Comment : mettre en cache plusieurs versions d'un contrôle utilisateur en fonction des paramètres
Mise à jour : novembre 2007
Vous pouvez varier la mise en cache de la sortie d'un contrôle utilisateur de deux façons :
Spécifier le nom du contrôle utilisateur en même temps qu'une chaîne de requête ou un paramètre POST de formulaire. Vous pouvez effectuer cette tâche de façon déclarative à l'aide de l'attribut VaryByParam de la directive @ OutputCache. Une autre solution consiste à le faire par programme en définissant la propriété VaryByParams de PartialCachingAttribute dans le code du contrôle utilisateur.
Spécifier la propriété ID d'un contrôle serveur ASP.NET contenue dans le contrôle utilisateur. Vous pouvez effectuer cette tâche de façon déclarative ceci à l'aide de l'attribut VaryByControl. Une autre solution consiste à le faire par programme en définissant la propriété VaryByControls de PartialCachingAttribute.
Remarque : La variation de la sortie du contrôle utilisateur vers le cache en fonction d'une chaîne de requête ou de paramètres POST de formulaire ne fonctionnera que si le contrôle utilisateur effectue une publication, qu'il traitera lui-même. Si le contrôle utilisateur publie en retour sur la page conteneur, ce type de mise en cache de la sortie du contrôle utilisateur ne fonctionne pas correctement.
Pour mettre en cache plusieurs versions d'un contrôle utilisateur de façon déclarative à l'aide de l'attribut VaryByControl
Créez un contrôle utilisateur capable d'effectuer une publication.
Dans le contrôle utilisateur, incluez une directive @ OutputCache avec les attributs Duration et VaryByControl.
Remarque : Si vous utilisez l'attribut VaryByControl dans la directive, vous n'avez pas besoin d'inclure également l'attribut VaryByParam, bien que vous puissiez l'inclure et le définir avec la valeur « None ».
Définissez l'attribut VaryByControl avec l'ID d'un contrôle avec lequel vous souhaitez varier la sortie du contrôle utilisateur.
Par exemple, la directive @ OutputCache suivante définit l'expiration du contrôle utilisateur à 60 secondes et varie la sortie du contrôle avec un contrôle serveur ASP.NET dont l'ID est State :
<%@ OutputCache Duration="60" VaryByControl="State" %>
Pour mettre en cache plusieurs versions d'un contrôle utilisateur par programme à l'aide de la propriété VaryByControls
Dans le code, créez un contrôle utilisateur capable d'être publié sur lui-même.
Incluez un objet PartialCachingAttribute au début du code de contrôle utilisateur.
Incluez une valeur pour le paramètre Duration et assignez au paramètre VaryByControls l'ID du contrôle serveur ASP.NET du contrôle utilisateur en fonction duquel vous souhaitez faire varier la sortie du contrôle utilisateur.
L'exemple de code suivant définit Duration avec la valeur 60 secondes et VaryByControls avec la valeur State. Ce code doit être inclus avant le code qui étend la classe UserControl.
[PartialCaching(60, null, State, null)]
<PartialCaching(60, null, State, null)>
Pour mettre en cache plusieurs versions d'un contrôle utilisateur de façon déclarative à l'aide de l'attribut VaryByParam
Créez un contrôle utilisateur capable d'être publié sur lui-même.
Dans le contrôle utilisateur, incluez une directive @ OutputCache avec les attributs Duration et VaryByParam.
Remarque : Si vous incluez l'attribut VaryByControl dans la directive @ OutputCache d'un contrôle utilisateur, vous n'avez pas besoin d'inclure également l'attribut VaryByParam.
Définissez l'attribut VaryByParam avec le paramètre de chaîne de requête GET ou le paramètre POST de formulaire en fonction duquel vous voulez faire varier le contrôle utilisateur.
Par exemple, la directive @ OutputCache suivante définit des délais d'expiration de 60 secondes pour le contrôle utilisateur et fait varier la sortie de ce contrôle en fonction d'un paramètre POST de formulaire ou d'un paramètre de chaîne de requête nommé State.
<%@ OutputCache Duration="60" VaryByParam="State" %>
Pour mettre en cache plusieurs versions d'un contrôle utilisateur par programme à l'aide de la propriété VaryByParams
Dans le code, créez un contrôle utilisateur capable d'être publié sur lui-même.
Incluez un objet PartialCachingAttribute au début du code de contrôle utilisateur.
Incluez une valeur pour le paramètre Duration et assignez au paramètre VaryByParams le paramètre de chaîne de requête GET ou le paramètre POST de formulaire en fonction duquel vous souhaitez faire varier la sortie du contrôle utilisateur.
L'exemple de code suivant définit Duration avec la valeur 60 secondes et VaryByParams avec un paramètre POST de formulaire ou un paramètre de chaîne de requête nommé State. Ce code doit être inclus avant le code qui étend la classe UserControl.
[PartialCaching(60, State, null, null)]
<PartialCaching(60, State, null, null)>
Voir aussi
Tâches
Concepts
Vue d'ensemble de la mise en cache ASP.NET
Mise en cache de pages ASP.NET
Mise en cache de plusieurs versions d'une page
Mise en cache de plusieurs versions de la sortie d'un contrôle utilisateur