Procédure : étendre la mise en cache à l'aide du gestionnaire d'événements VaryByCustom
Dernière modification : jeudi 26 mai 2011
S’applique à : SharePoint Server 2010
Vous pouvez étendre et manipuler la mise en cache en créant une interface IVaryByCustomHandler. VaryByCustom est une fonctionnalité de mise en cache d’ASP.NET que vous pouvez utiliser pour mettre en cache plusieurs versions de sortie de pages, en fonction de chaînes personnalisées. Par exemple, vous pouvez utiliser VaryByCustom pour afficher des pages mises en cache qui présentent une chaîne bienvenue différente pour chaque utilisateur. Pour plus d’informations sur VaryByCustom dans ASP.NET, voir l’article Mise en cache de la sortie de pages (Première partie) sur MSDN.
Cette rubrique couvre les trois étapes de base qui sont nécessaires pour utiliser la propriété VaryByCustom afin d’étendre la mise en cache dans Microsoft SharePoint Server 2010 :
Créer un gestionnaire VaryByCustom qui fournit une liste de chaînes personnalisées que le cache de sortie utilise pour faire varier le contenu de la page retournée.
Inscrire le gestionnaire dans le fichier Global.asax.
Définir des chaînes personnalisées qui varient pour chaque profil de cache dans votre application Web. Le système passe ces chaînes au gestionnaire VaryByCustom, qui détermine comment faire varier le cache.
L'exemple de code fait varier le contenu en fonction de deux paramètres : le fait que le navigateur client prend ou non en charge les feuilles de style en cascade (CSS), et le fait que l'utilisateur actuel est ou non un administrateur. En fonction de la valeur de la chaîne personnalisée qui est passée à la méthode GetVaryByCustomString, la fonction construit une chaîne qui repose sur un seul des deux paramètres, sur les deux paramètres ou sur aucun des deux paramètres. Le système de mise en cache crée un cache distinct pour chaque valeur renvoyée par GetVaryByCustomString. Par exemple, si la valeur de custom est SupportsCSS, GetVaryByCustomString retourne une chaîne contenant True ou False, selon le résultat de sb.Append(context,Request.Browser.SupportsCss.ToString) : une qui prend en charge les feuilles de style en cascade et l'autre pas.
Vous pouvez spécifier la valeur de la chaîne personnalisée pour chaque profil de cache dans votre application Web, comme le montre l'exemple de code suivant :
//First, write a VaryByCustom handler. This example varies based on
//two parameters: whether the client browser supports CSS,
//and whether the current user is an administrator.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.SharePoint.Publishing;
using Microsoft.SharePoint.ApplicationRuntime;
using Microsoft.SharePoint;
namespace CacheDemo
{
public class CacheDemoHttpApplication ; SPHttpApplication, IVaryByCustomHandler
{
internal const string MyVaryByString1 = "SupportsCSS";
internal const string MyVaryByString2 = "SiteAdmin";
public override void Init()
{
base.Init();
this.RegisterGetVaryByCustomStringHandler((Microsoft.SharePoint.ApplicationRuntime.IVaryByCustomHandler)this);
}
public string GetVaryByCustomString(HttpApplication app, HttpContext context, string custom)
{
//The code looks for parameters specified in the cache
//profile that are passed to the handler and parses them,
//delimited by a semicolon.
StringBuilder sb = new StringBuilder();
string[] strings = custom.Split(';');
bool appended = false;
foreach (string str in strings)
{
switch (str)
{
case MyVaryByString1:
if (appended)
{
sb.Append(';');
}
//If you want to vary based on a property of
//the request, work with the http context.
sb.Append(context.Request.Browser.SupportsCss);
break;
case MyVaryByString2:
if (appended)
{
sb.Append(';');
}
//If you want to vary by whether the current
//user is the site administrator,
//examine the SPContext.
sb.Append(SPContext.Current.Web.UserIsSiteAdmin.ToString());
break;
default:
continue;
}
appended = true;
}
return sb.ToString();
}
}
}
Ensuite, enregistrez le gestionnaire d'événements VaryByCustom dans le fichier Global.asax. Vous devez modifier la balise Assembly pour spécifier l'assembly que vous créez avec le code précédent.
//Register the VaryByCustom string in the Global.asax file.
<%@ Assembly Name="Microsoft.SharePoint"%>
<%@ Assembly Name="cachedemo"%>
<%@ Import Namespace="cachedemo" %>
<%@ Application Language="C#" Inherits="cachedemo.CacheDemoHttpApplication" %>
Enfin, spécifiez la valeur de la chaîne personnalisée pour chaque profil de cache dans votre application Web.
Modifier chaque profil de cache dans votre collection de sites
Accédez au site racine de votre collection de sites.
Cliquez sur Actions du site, pointez sur Paramètres du site, puis cliquez sur Modifier tous les paramètres du site.
Dans la section Administration de la collection de sites, cliquez sur Profils de cache de la collection de sites.
Pointez sur le profil de cache que vous souhaitez modifier, cliquez avec le bouton droit, puis cliquez sur Modifier.
Dans le champ Variation par paramètre personnalisé, tapez la chaîne personnalisée que vous souhaitez ajouter. Pour cet exemple, tapez SupportsCSS;SiteAdmin. Cliquez sur OK.
Voir aussi
Concepts
Mise en cache de sortie et profils de cache