Mettre en cache suivant un paramètre personalisé

Soyez le premier à donner votre avis sur cette source.

Snippet vu 18 081 fois - Téléchargée 26 fois

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

Ajouter un commentaire

Commentaires

cs_Alexis35
Messages postés
44
Date d'inscription
vendredi 21 octobre 2005
Statut
Membre
Dernière intervention
2 mai 2011

Bonjour, ce code m'interresse grandement malheureusement j'ai un message d'erreur avec ce code : "État de session non disponible dans ce contexte."

Et si je remplace Session("langue") par System.Web.HttpContext.Current.Session("langue") il me dit que ca a la valeur NULL, alors que je l'initialise bien dans mon load de ma page...

Une idée?

Merci beaucoup d'avance!
sebmafate
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
mouarf... j'm'en doutais... :p

seb... guignol de service...
jesusonline
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
18
la propriété duration est en secondes :)

donc dans ce cas, le cache dure 2min (120sec)
sebmafate
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
le duration="120"... c'est 120 quoi :D

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.