Vorgehensweise: Erweitern der Zwischenspeicherung mithilfe des VaryByCustom-Ereignishandlers

Letzte Änderung: Donnerstag, 26. Mai 2011

Gilt für: SharePoint Server 2010

Sie können die Zwischenspeicherung erweitern und ändern, indem Sie eine IVaryByCustomHandler-Schnittstelle erstellen. VaryByCustom ist ein ASP.NET-Zwischenspeicherungsfeature, mit dem Sie mehrere Versionen einer Seitenausgabe basierend auf benutzerdefinierten Zeichenfolgen zwischenspeichern können. Sie können beispielsweise VaryByCustom verwenden, wenn Sie zwischengespeicherte Seiten anzeigen möchten, auf denen jeweils unterschiedliche Willkommenszeichenfolgen für die einzelnen Benutzer angezeigt werden. Weitere Informationen zu VaryByCustom in ASP.NET finden Sie im Artikel Zwischenspeicherung der Seitenausgabe, Teil 1 auf der MSDN-Website.

In diesem Thema werden die drei grundlegenden Schritte behandelt, die erforderlich sind, wenn Sie die VaryByCustom-Eigenschaft zum Erweitern der Zwischenspeicherung in Microsoft SharePoint Server 2010 verwenden möchten:

  • Erstellen Sie einen VaryByCustom-Handler, von dem eine Liste von benutzerdefinierten Zeichenfolgen bereitgestellt wird, die vom Ausgabecache verwendet werden, um den Inhalt der zurückgegebenen Seite zu variieren.

  • Registrieren Sie den Handler in der Datei Global.asax.

  • Definieren Sie unterschiedliche benutzerdefinierte Zeichenfolgen für die einzelnen Cacheprofile in der Webanwendung. Diese Zeichenfolgen werden vom System dem VaryByCustom-Handler übergeben, der bestimmt, wie der Cache variiert werden soll.

Im Beispielcode wird der Inhalt basierend auf zwei Parametern variiert: Werden Cascading Stylesheets (CSS) vom Clientbrowser unterstützt, und ist der aktuelle Benutzer Administrator? Abhängig vom Wert der benutzerdefinierten Zeichenfolge, die der GetVaryByCustomString-Methode übergeben wird, wird von der Funktion eine Zeichenfolge erstellt, die auf einem, beiden oder keinem dieser Parameter basiert. Vom Zwischenspeicherungssystem wird für jeden von GetVaryByCustomString zurückgegebenen Wert ein separater Cache erstellt. Wenn der Wert von custom beispielsweise SupportsCSS entspricht, wird von GetVaryByCustomString eine Zeichenfolge zurückgegeben, die True oder False enthält. Dies hängt vom Ergebnis von sb.Append(context,Request.Browser.SupportsCss.ToString) ab: Im einen Fall wird CSS unterstützt und im anderen nicht.

Sie können den Wert der benutzerdefinierten Zeichenfolge wie im folgenden Codebeispiel gezeigt für jedes Cacheprofil in der Webanwendung angeben:

//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();
        }
    }
}

Registrieren Sie als Nächstes den VaryByCustom-Ereignishandler in der Datei Global.asax. Sie müssen das Assembly-Tag ändern, um die mit dem vorstehenden Code erstellte Assembly anzugeben.

//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" %>

Geben Sie schließlich den benutzerdefinierten Zeichenfolgenwert für die einzelnen Cacheprofile in der Webanwendung an.

Bearbeiten der einzelnen Cacheprofile in der Websitesammlung

  1. Navigieren Sie zur Stammwebsite der Websitesammlung.

  2. Klicken Sie auf Websiteaktionen, zeigen Sie auf Websiteeinstellungen, und klicken Sie dann auf Alle Websiteeinstellungen ändern.

  3. Klicken Sie im Abschnitt Websitesammlungsverwaltung auf Cacheprofile für die Websitesammlung.

  4. Zeigen Sie auf das zu ändernde Cacheprofil, klicken Sie mit der rechten Maustaste, und klicken Sie dann auf Bearbeiten.

  5. Geben Sie in das Feld Benutzerdefinierte Parameter verschieden die benutzerdefinierte Zeichenfolge ein, die Sie hinzufügen möchten. Geben Sie in diesem Beispiel SupportsCSS;SiteAdmin ein. Klicken Sie auf OK.

Siehe auch

Konzepte

Ausgabezwischenspeicherung und Cacheprofile

Benutzerdefinierte Zwischenspeicherung (Übersicht)

Zwischenspeichern von Objekten