Compartilhar via


Otimizando o armazenamento em cache do BLOB para ambientes WAN (SharePoint Server 2010)

 

Aplica-se a: SharePoint Server 2010

Tópico modificado em: 2016-11-30

Este artigo descreve como usar o cache BLOB no Produtos do Microsoft SharePoint 2010 para ambientes WAN.

O cache é geralmente abordado como uma forma de melhorar a produtividade no pipeline de processamento — do momento em que uma solicitação é recebida no servidor até o momento em que uma resposta começa a fluir para o computador cliente. Embora este seja um aspecto importante do desempenho geral do site, esta seção aborda o cache no que se refere ao seguinte:

  • A função da configuração do servidor no cache de cliente.

  • Controlando o tamanho dos itens que são transmitidos por meio da rede do servidor para o cliente.

Sobre o cache BLOB

O cache BLOB é um mecanismo que está disponível apenas com os recursos de publicação do SharePoint Server 2010. Isso o torna um candidato ideal para sites de portal corporativo que se baseiam no modelo de site de Portal de Colaboração e para sites de Internet que são baseados no modelo de site de Portal de Publicação. O cache BLOB permite que você configure diretivas de cache que são associadas a itens disponibilizados de listas de sites de publicação, por exemplo, a Biblioteca de páginas e as Imagens do Conjunto de Sites. Quando o navegador no computador cliente encontra uma diretiva de cache, ele detecta que o item sendo recuperado pode ser salvo localmente e não precisa ser solicitado novamente até a expiração da diretiva de cache. Em um ambiente distribuído geograficamente, isso é importante porque reduz o número de itens solicitados e enviados pela rede.

Quando o cache BLOB no SharePoint Server 2010 está ativado, ocorrem duas situações diferentes. Primeiro, sempre que um item armazenável em cache é solicitado, o SharePoint Server 2010 pesquisa o disco rígido do servidor Web que recebeu a solicitação para verificar se existe uma cópia localmente. Caso afirmativo, o arquivo será transmitido diretamente do disco local para o usuário. Se ele não estiver no disco local, uma cópia do item será feita a partir do banco de dados SQL em que está armazenado e o item será enviado para o usuário que fez a solicitação. Em seguida, todas as solicitações do item serão disponibilizadas diretamente do servidor Web até que o valor da capacidade de cache do item indique que ele expirou. Isso resulta em melhor desempenho no farm de servidores reduzindo a contenção no banco de dados.

A outra situação que o ativamento do cache BLOB causa é anexar um cabeçalho de capacidade de cache ao item quando o item é enviado para o cliente. Esse cabeçalho instrui o navegador sobre por quanto tempo o item deve ser armazenado em cache. Por exemplo, se uma imagem tiver um valor de capacidade de cache de três dias, o navegador usará a cópia da imagem armazenada no cache local se a imagem for solicitada novamente nos próximos três dias; ele não a solicita do servidor novamente.

Usando o Fiddler para obter dados sobre o cache BLOB

Ao testar seu site para visualizar quais itens estão sendo armazenados em cache e quais não estão, você pode usar um aplicativo gratuito de depuração chamado Fiddler (http://www.fiddlertool.com). A captura de tela a seguir mostra uma captura do Fiddler em um site simples do SharePoint usado para publicação. O site foi criado usando o modelo de site padrão do Portal de Colaboração. Algum conteúdo de texto adicional foi adicionado à página e várias imagens foram adicionadas à página mestre.

Resultados da ferramenta Fiddler

Existem diversas informações importantes contidas no aplicativo Fiddler.

  • A coluna # (N°) à esquerda indica que há um total de 44 solicitações HTTP feitas do navegador para o servidor para renderizar a página.

  • A coluna Result (Resultado) mostra o código de resultado HTTP retornado da solicitação pelo item; um resultado de 200 significa que o item foi recuperado com êxito.

  • A coluna URL indica qual item específico estava sendo solicitado.

  • A coluna Body (Corpo) indica o tamanho de cada item.

  • A coluna Caching (Cache) mostra a diretiva de cache que foi associada a cada item. Os dados na coluna Caching mostram que vários itens têm uma diretiva de cache associada a eles; isto é, eles têm um atributo max-age maior que 0. As diretivas de cache são expressas em segundos. Isso significa que, na página ilustrada, vários itens estão configurados para serem armazenados em cache por 365 dias (60 segundos em um minuto, 60 minutos em um hora, 24 horas em um dia = 60x60x24 = 86.400x365 = 31.536.000).

Observe que os itens com essa diretiva de cache residem no diretório _layouts. O motivo no qual eles têm esta configuração de cache é devido à maneira na qual o diretório virtual _layouts/images está configurado no IIS. Quando você cria um novo aplicativo Web, o SharePoint Server 2010 cria automaticamente vários diretórios virtuais que são mapeados para pastas nos discos físicos do servidor Web. Quando ele cria o diretório virtual _layouts/images, ele adiciona uma diretiva de cache que se aplica a todo o diretório. A captura de tela a seguir mostra a configuração do diretório no snap-in Gerenciador do IIS.

Caixa de diálogo Definir Cabeçalhos de Resposta HTTP Comuns

Como todos esses itens têm uma diretiva de cache diferente de zero associada a eles, na próxima vez que a página for solicitada, o navegador usará a cópia do item a partir de seu cache de navegador local em vez de solicitá-lo do servidor novamente. A captura de tela a seguir uma um instantâneo do Fiddler quando a página é solicitada pela segunda vez.

Resultados da ferramenta Fiddler

Conforme mostrado pelos dados do Fiddler, o número de itens solicitados foi reduzido significativamente, de 44 para 11. Um ponto importante a ser observado é que o número de solicitações feitas pode variar dependendo da forma na qual a página é solicitada. Se você usar o botão Atualizar no navegador, todos os itens provavelmente serão solicitados novamente, independentemente da versão armazenada em cache local existir ou não. Por outro lado, se a página for solicitada usando um link ou atalho, somente os itens não armazenados em cache serão solicitados.

A outra característica mostrada nos dados do Fiddler é que o navegador está fazendo uma solicitação para o servidor para obter as outras imagens na página mestre que ele já tem em seu cache local; o código de resposta 304 indica isso. Isso significa que o navegador fez uma solicitação condicional para um item. A resposta 304 significa que a versão no servidor não foi modificada desde a versão do cliente; portanto, ela não tem que ser baixada novamente. Mesmo o arquivo não sendo baixado da rede, ele ainda gerou uma viagem de ida e volta para o servidor para determinar se a cópia local é atual. Em um ambiente disperso geograficamente, as viagens de ida e volta do servidor são onerosas. Assim, o objetivo é reduzir isso tanto quanto possível. Você pode fazê-lo adicionando uma diretiva de cache diferente de zero para cada um dos itens restantes (exceto a página, que é sempre retornada pelo servidor). O recurso de cache BLOB adiciona essa diretiva de cache.

Configurando o cache BLOB usando Web.config

Configure o cache BLOB usando o arquivo Web.config para o aplicativo Web no qual o cache será usado. Abra o arquivo Web.config em um editor de texto, como o Bloco de Notas e pesquise pela entrada BlobCache. Por padrão, esta será:

<BlobCache location="" path="\.(gif|jpg|jpeg|jpe|jfif|bmp|dib|tif|tiff|ico|png|wdp|hdp|css|js|asf|avi|flv|m4v|mov|mp3|mp4|mpeg|mpg|rm|rmvb|wma|wmv)$" maxSize="10" enabled="false" />

Os atributos usados no elemento BlobCache têm os seguintes significados:

  • location    Refere-se ao local na unidade de disco rígido do servidor Web no qual os itens serão armazenados em cache.

  • path   Uma expressão regex dos tipos de arquivos que devem ser armazenados em cache.

  • maxSize **   **O tamanho, em GB, que o cache pode usar.

  • enabled    Defina como true para habilitar o cache BLOB.

O seguinte atributo adicional (não incluído por padrão) é necessário para definir um valor de expiração de cache em itens individuais:

  • max-age   O tempo em segundo durante o qual estes itens devem ser armazenados em cache no computador cliente.

Quando você define o atributo max-age como um valor diferente de zero, os itens armazenáveis em cache têm um valor de expiração de cache associado a eles para que um navegador não tenha que baixá-los ou mesmo verificar se a versão deles é a mais recente. Por exemplo, suponha que você deseje habilitar o cache e alocar até 100 MB no servidor Web para armazenar os itens. Eles devem expirar uma vez por dia e, além dos tipos predefinidos que são armazenados em cache, os arquivos .htc também devem ser armazenados. Para oferecer suporte a estes requisitos, especifique os seguintes atributos BlobCache:

<BlobCache location="C:\blobcache" path="\.(gif|jpg|png|css|js|htc)$ " maxSize="100" max-age="86400" enabled="true"/>

Observe que esta alteração no arquivo Web.config deve ser feita em todos os servidores Web no farm. Na maioria dos casos, o cache BLOB começará a funcionar imediatamente, mas é mais seguro usar o comando iisreset quando você implementar as alterações. A captura de tela a seguir mostra os dados do Fiddler para a mesma solicitação de página mostrada anteriormente, mas com o cache BLOB habilitado conforme descrito.

Resultados da ferramenta Fiddler

Observe que todos os itens na biblioteca /SiteCollectionImages agora têm um código de status HTTP de 200, que indica que eles foram baixados com êxito. Além disso, eles agora têm um diretiva de Cache associada a eles que especifica que eles não expirarão por um dia (86.400 segundos). Se a página for solicitada novamente, o Fiddler mostrará que nenhuma das imagens será solicitada novamente; o número total de solicitações para disponibilizar esta página terá caído de 44 para 3, e duas das três solicitações restantes serão para a negociação de autenticação NTLM que ocorre entre o servidor Web e o aplicativo cliente. A figura a seguir mostra os dados do Fiddler quando a página é solicitada novamente.

Resultados da ferramenta Fiddler

Considerações adicionais quando você está usando o cache BLOB

Além disso, considere o seguinte quando você trabalhar com o cache BLOB:

  • Ele exige algum esforço adicional para ser configurado porque você tem que atualizar o arquivo Web.config file em cada servidor Web. No entanto, os benefícios compensam o esforço.

  • Pesquise o conteúdo de seu site e determine se há qualquer outro tipo de arquivo que deve ser disponibilizado do cache. Um bom exemplo são os arquivos .htc. Como os arquivos .htc são usados na maioria dos sites de publicação, você deve adicionar esse tipo de arquivo à lista de tipos de arquivo sendo armazenados em cache.

  • O cache BLOB somente funciona nos itens que são armazenados nas bibliotecas do SharePoint; ele não pode ser usado para armazenar em cache o conteúdo de outras fontes.

  • Por padrão, algumas listas não funcionam com usuários anônimos. Se usuários anônimos estiverem acessando o site, as permissões deverão ser configuradas manualmente para as seguintes listas para que os itens neste site sejam armazenados em cache:

    • Galeria de Páginas Mestras

    • Biblioteca de Estilos

Há duas outras opções de configuração a serem configuradas quando você está trabalhando com o cache BLOB. A primeira está relacionada à limpeza do cache BLOB. Se o cache tiver que ser limpo para um site específico, navegue até este conjunto de site e clique no menu Ações do SiteDefinições do SiteModificar Todas as Definições do Site. Na lista das tarefas de Administração do Conjunto de Sites. clique no link Cache de objetos do conjunto de sites. Na seção Redefinir Cache Baseado em Disco, marque a caixa de seleção Forçar este servidor a redefinir seu cache baseado em disco e clique em OK.