Compartilhar via


Como a: estender o cache usando o manipulador de eventos VaryByCustom

Você pode estender e manipular cache criando uma interface IVaryByCustomHandler T:Microsoft.SharePoint.ApplicationRuntime.IVaryByCustomHandler. VaryByCustom é um ASP.NET cache recurso que você pode usar para armazenar em cache múltiplo versões de saída página, com base em personalizado seqüências de caracteres. De exemplo, você pode utilizar VaryByCustom se você desejar para exibir em cache páginas que exibir um diferente Bem-vindo seqüência de caracteres para cada usuário. Para obter mais informações sobre VaryByCustom na ASP.NET, consulte o Page Output Caching, Part 1 Part 1 em MSDN.

Este tópico aborda as três etapas básicas que sejam exigido para usar a propriedade VaryByCustom VaryByCustom para estender cache em Microsoft Office do SharePoint Server 2007.

  • Crie um manipulador VaryByCustom VaryByCustom que fornece que uma lista de personalizado seqüências de caracteres que armazenar em cache a saída usa para variar de conteúdo na página retornada.

  • Registrar o manipulador no arquivo Global.asax.

  • Definir personalizado seqüências para variar para cada perfil armazenar em cache no seu aplicativo da Web. O sistema passa essas seqüências de caracteres para o manipulador VaryByCustom VaryByCustom, que determina como para variar a armazenar em cache.

A codificar exemplo varia de conteúdo com base em dois parâmetros: se o navegador cliente oferece suporte a em cascata folhas estilo (folhas de estilo em cascata) e se o atual usuário é um administrador. Depending on o valor do personalizado seqüência de caracteres que é passado para o GetVaryByCustomString M:Microsoft.SharePoint.ApplicationRuntime.IVaryByCustomHandler.GetVaryByCustomString(System.Web.HttpApplication,System.Web.HttpContext,System.String) método, a função constrói um seqüência de caracteres que está com base em um, ambos ou nenhum desses parâmetros. O cache sistema cria um separar armazenar em cache para cada valor que GetVaryByCustomString retorna. For example, if the value of custom is SupportsCSS, GetVaryByCustomString returns either a string containing True or False, depending on the result of sb.Append(context,Request.Browser.SupportsCss.ToString): one that supports CSS, and one that does not.

Você pode especificar o valor do personalizado seqüência de caracteres para cada perfil armazenar em cache no seu aplicativo da Web, conforme o seguinte amostra de código:

[C#]

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

Próxima, registrar a manipulador de eventos VaryByCustom VaryByCustom no arquivo Global.asax. Você deve modificar a marca Conjunto de Módulos (Assembly) para especificar o assembly que você compilar com a acima codificar.

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

Finalmente, especificar o personalizado valor da seqüência de caracteres para cada perfil armazenar em cache no seu aplicativo da Web.

Editar cada perfil armazenar em cache na coleção seu site

  1. Navegue até o site raiz de sua coleção site.

  2. Clique em clique, apontar para Site Settings e ações site modificar todas as configurações do site .

  3. Clique em perfis de cache da coleção de sites no Site Collection Administration seção.

  4. Aponte para o perfil armazenar em cache que você desejar modificar, clique com o botão direito do mouse e clique em Editar ****.

  5. Digite o personalizado seqüência de caracteres que desejar para adicionar no campo Vary By Custom Parameter , such as SupportsCSS;SiteAdmin para uso com esse exemplo e em seguida, clique OK .

Consulte também

Outros recursos

O cache de saída e perfis de cache
Personalizar o cache Visão geral
Objeto de cache