Comment : mettre en cache des versions d'une page à l'aide d'en-têtes HTTP
Mise à jour : novembre 2007
ASP.NET vous permet de mettre en cache plusieurs versions d'une page selon la valeur d'un en-tête HTTP que vous spécifiez. Vous pouvez spécifier la mise en cache en fonction d'un en-tête, de plusieurs en-têtes ou de tous les en-têtes passés à votre application lors d'une demande de la page.
Pour mettre en cache des versions d'une page de façon déclarative en fonction des valeurs des en-têtes HTTP
Dans la page ASP.NET, incluez une directive @ OutputCache avec les attributs Duration et VaryByParam ou VaryByControl requis. L'attribut Duration doit avoir une valeur de type entier supérieure à zéro. Si vous souhaitez que la mise en cache dépende uniquement des valeurs d'en-tête HTTP, vous devez affecter à l'attribut VaryByParam la valeur "None".
Dans la directive @ OutputCache, incluez l'attribut VaryByHeader et affectez-lui une valeur représentant le nom de l'en-tête HTTP en fonction duquel le contenu du cache doit varier.
L'exemple suivant met la page en cache pendant 60 secondes et définit les versions d'une page à mettre en cache selon la valeur passée avec l'en-tête HTTP Accept-Language :
<%@ OutputCache Duration="60" VaryByParam="None" VaryByHeader="Accept-Language" %>
Remarque : Si vous souhaitez que le contenu mis en cache varie en fonction de plusieurs en-têtes, incluez une liste de noms d'en-têtes séparés par des points-virgules (;). 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.
Pour mettre en cache des versions d'une page par programme en fonction d'une valeur d'en-tête HTTP
Dans la méthode Page_Load de la page, appelez les méthodes SetCacheability et SetExpires sur la propriété Cache de l'objet Response de la page.
Dans la propriété VaryByHeaders, affectez la valeur true à l'en-tête HTTP.
L'exemple de code suivant montre comment mettre en cache plusieurs versions d'une page pendant une minute pour les demandes présentant des valeurs d'en-tête HTTP Accept-Language différentes.
protected void Page_Load(object sender, EventArgs e) { Response.Cache.SetExpires(DateTime.Now.AddMinutes(1d)); Response.Cache.SetCacheability(HttpCacheability.Public); Response.Cache.SetValidUntilExpires(true); Response.Cache.VaryByHeaders["Accept-Language"] = true; }
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Response.Cache.SetExpires(DateTime.Now.AddMinutes(1.0)) Response.Cache.SetCacheability(HttpCacheability.Public) Response.Cache.SetValidUntilExpires(True) Response.Cache.VaryByHeaders("Accept-Language") = true End Sub
Remarque : Si vous souhaitez faire varier le contenu mis en cache en fonction de plusieurs en-têtes, vous devez définir plusieurs valeurs dans la propriété VaryByHeaders. Si le contenu doit varier en fonction de tous les en-têtes, affectez à VaryByHeaders["VaryByUnspecifiedParameters"] la valeur true.
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 de paramètres
Comment : mettre en cache des versions d'une page à l'aide de chaînes personnalisées
Concepts
Mise en cache de pages ASP.NET