Mettre en cache suivant un paramètre personalisé

Contenu du snippet

Pour mettre en cache une page web, ou un contrôle utilisateur, on utilise la directive de page @outputcache

==> http://msdn.microsoft.com/library/fre/default.asp?url=/library/FRE/cpgenref/html/cpconOutputCache.asp

On peut avoir plusieurs caches différents. En spécifiant des valeurs pour varybycontrol : le cache change suivant un UC de la page pour varybyparam : le cache change en fonction d'un paramètre contenu dans la requete (via post ou get)

Mais comment faire varier le cache en fonction d'un autre paramètre, tel qu'une variable session, ou l'adresse du site ... en utilisant varybycustom.

Dans cet exemple je vous montre comment changer le cache suivant une variable session.

Tout d'abord il faut mettre la directive page et renseigner par quelle valeur personalisé on veut que le cache varie, dans notre cas la variable s'appelle langue.
<%@outputCache duration="120" varybyparam="" varybyCustom="langue" %>

Ensuite on surcharge GetVaryByCustomString du global.asax et c'est là qu'on donne une valeur pour la variable langue

Source / Exemple :


<%@outputCache duration="120" varybyparam="" varybyCustom="langue" %>

dans le global.asax 

    Public Overrides Function GetVaryByCustomString(ByVal context As System.Web.HttpContext, ByVal custom As String) As String
        If custom = "langue" Then
            Return CStr(Session("langue"))
        End If
    End Function

Conclusion :


Il n'y a rien de compliqué, c'est juste une astuce à savoir :)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.