Partager via


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

Mise à jour : novembre 2007

En plus de varier le cache de sortie en fonction du type de navigateur et de paramètres, vous pouvez mettre en cache plusieurs versions d'une sortie de page en fonction de différentes chaînes retournées par une méthode que vous définissez.

Lorsque vous mettez en cache des pages en fonction de chaînes personnalisées, vous spécifiez d'abord un identificateur pour la chaîne personnalisée à utiliser. Vous créez ensuite une méthode dans le fichier Global.asax de l'application qui accepte l'identificateur et retourne une valeur en fonction de laquelle le cache de sortie est varié.

Pour mettre en cache plusieurs versions d'une sortie de page en fonction de chaînes personnalisées

  1. Dans la page ASP.NET, incluez une directive @ OutputCache avec les attributs Duration et VaryByParam requis. L'attribut Duration doit avoir une valeur de type entier supérieure à zéro. Si vous ne souhaitez pas utiliser la fonctionnalité proposée par l'attribut VaryByParam, assignez-lui la valeur "None".

  2. Pour définir la chaîne personnalisée de manière déclarative, dans la directive @ OutputCache, incluez l'attribut VaryByCustom ayant comme valeur la chaîne en fonction de laquelle vous voulez faire varier le cache de sortie.

    La directive suivante fait varier la sortie de la page en fonction de la chaîne personnalisée "minorversion".

    <%@ OutputCache Duration="10" VaryByParam="None" VaryByCustom="minorversion" %>
    
  3. Pour définir la chaîne personnalisée par programme, appelez la méthode SetVaryByCustom et passez-lui la chaîne personnalisée à utiliser.

    L'exemple de code suivant montre comment définir la chaîne personnalisée "minorversion".

    Response.Cache.SetVaryByCustom("minorversion");
    
    Response.Cache.SetVaryByCustom("minorversion")
    
    Remarque :

    Si vous essayez de définir la chaîne personnalisée à la fois par programme et de façon déclarative, vous obtiendrez une InvalidOperationException. Vous devez choisir l'une des deux approches.

  4. Dans le fichier Global.asax de l'application, substituez la méthode GetVaryByCustomString afin de spécifier le comportement du cache de sortie pour la chaîne personnalisée.

    Comme son paramètre arg, la méthode substituée accepte la chaîne que vous définissez dans l'attribut VaryByCustom ou dans la méthode SetVaryByCustom. Par exemple, vous pouvez avoir des pages qui sont mises en cache en fonction de la version secondaire du navigateur qui effectue la demande. Pour ces pages, vous pouvez affecter la valeur "minorversion" à l'attribut VaryByCustom. Puis, dans la méthode GetVaryByCustomString substituée, vous pouvez vérifier le paramètre arg et retourner des chaînes différentes si la valeur du paramètre arg est "minorversion".

    L'exemple de code suivant présente un fichier Global.asax avec une substitution de la méthode GetVaryByCustomString.

    <%@ Application language="C#" %>
    <script >
    public override string GetVaryByCustomString(HttpContext context, 
        string arg)
    {
        if(arg == "minorversion")
        {
            return "Version=" +
                context.Request.Browser.MinorVersion.ToString();
        }
        return base.GetVaryByCustomString(context, arg);
    }
    </script>
    
    <script >
    Public Overrides Function GetVaryByCustomString(context _
            As HttpContext, arg As String) As String
        If (arg = "minorversion") Then
            Return "Version=" & _
                context.Request.Browser.MinorVersion.ToString()
        return base.GetVaryByCustomString(context, arg);
    End Function
    </script>
    

Voir aussi

Tâches

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

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