Partager via


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

La capacité de mise en cache d'une page ou d'un contrôle utilisateur fait référence à la possibilité de mise en cache d'une page sur un système pendant le cycle de vie de réponse de la page. Ces systèmes capables de mettre une page en cache incluent le navigateur envoyant la demande, le serveur Web qui répond à cette demande, ainsi que tous les systèmes prenant en charge la mise en cache, tels que des serveurs proxy, situés dans le flux de demande ou de réponse.

Lorsqu'un serveur Web envoie une réponse au navigateur à l'origine de la demande, le serveur inclut dans la réponse un champ Cache-Control dans l'en-tête HTTP qui définit les systèmes sur lesquels la page peut être mise en cache. Selon les besoins de votre application, vous pouvez définir les systèmes qui doivent ou ne doivent pas mettre en cache des pages ASP.NET individuelles. Par exemple, supposons que vous souhaitez appliquer à la page de connexion utilisateur des paramètres de capacité de mise en cache différents de ceux utilisés pour une page affichant des produits sélectionnés dans un catalogue. Dans le premier cas, vous souhaitez, pour des raisons de sécurité, mettre la page en cache uniquement sur le serveur, alors que dans le deuxième scénario la page peut être mise en cache sur n'importe quel système offrant cette possibilité.

Pour les pages ASP.NET, vous pouvez définir la capacité de mise en cache à l'aide de valeurs dans l'énumération HttpCacheability. L'énumération a les valeurs suivantes. Les trois premières correspondent directement aux paramètres de l'en-tête HTTP Cache-Control et les trois dernières sont des valeurs spéciales.

  • NoCache   Spécifie que le système à l'origine de la demande doit obtenir chaque fois la réponse du serveur Web.

  • Public   Autorise la mise en cache de la réponse par les clients et les caches partagés (proxy).

  • Private   Spécifie que la réponse peut uniquement être mise en cache par le client et pas par les caches partagés (serveur proxy).

  • Server   Spécifie que la réponse est mise en cache uniquement sur le serveur d'origine.

  • ServerAndNoCache   Applique les paramètres de Server et NoCache pour indiquer que le contenu est mis en cache sur le serveur, mais que la mise en cache de la réponse est explicitement refusée à tous les autres systèmes.

  • ServerAndPrivate   Spécifie qu'une réponse doit être mise en cache uniquement sur le serveur d'origine et sur le client qui a envoyé la demande ; les serveurs proxy ne sont pas autorisés à mettre la réponse en cache.

Vous pouvez définir de façon déclarative la capacité de mise en cache d'une page en incluant un attribut Location dans la directive @ OutputCache et en spécifiant l'une des valeurs de l'énumération OutputCacheLocation. Vous pouvez également définir la capacité de mise en cache d'une page par programme à l'aide de la méthode SetCacheability pour spécifier une valeur de HttpCacheability pour la page. La méthode est accessible via la propriété Cache de la classe Response.

Notes

Si vous utilisez la directive @ OutputCache pour définir la capacité de mise en cache de votre page, vous devez déclarer l'attribut Duration et soit l'attribut VaryByControl soit l'attribut VaryByParam en même temps que l'attribut Location. L'attribut Duration doit avoir une valeur supérieure à zéro. Vous pouvez attribuer la valeur "None" à l'attribut VaryByParam si vous ne souhaitez pas utiliser les fonctionnalités des paramètres VaryByParam ou VaryByControl. Pour plus d'informations, consultez Comment : définir des valeurs d'expiration pour la mise en cache de page ASP.NET et Mise en cache de plusieurs versions d'une page.

Si vous ne voulez pas utiliser la directive @ OutputCache pour définir la capacité de mise en cache d'une page, une autre solution consiste à créer un profil de cache dans le fichier Web.config de votre application puis à référencer le profil dans votre page. Pour plus d'informations, consultez Configuration du cache dans ASP.NET.

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

Référence

Duration

Concepts

Mise en cache de pages ASP.NET