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

  1. 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".

  2. 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

  1. 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.

  2. 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

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

Mise en cache de plusieurs versions d'une page