Cache <caching>

Visão geral

O elemento <caching> permite habilitar ou desabilitar o cache de saída de página para um aplicativo do IIS (Serviços de Informações da Internet) 7. Esse elemento também permite que você configure se o IIS armazena em cache a saída da página no modo de usuário, no modo kernel ou em ambos e quais, se houver, os limites de cache de saída você deseja impor.

O elemento <caching> também contém um elemento <profiles> que contém uma coleção de configurações de cache de saída que você pode aplicar a páginas ASP.NET.

O cache de saída de página armazena na memória uma resposta de uma página dinâmica, como uma página ASP ou uma página ASP.NET, depois que um navegador a solicita. Quando as solicitações subsequentes chegam para a página, o servidor envia a resposta armazenada em cache em vez de reprocessar a página. O cache de saída da página ASP.NET é separado do cache de saída do IIS 7. Em aplicativos que usam o modo ASP.NET integrado, o cache de saída da página ASP.NET pode ser usado programaticamente para qualquer tipo de conteúdo, assim como o cache de saída do IIS 7.

O cache de saída da página reduz o tempo de resposta e a carga do servidor. O cache de saída funciona melhor com páginas semi-dinâmicas, como uma página ASP.NET que depende de uma tabela de banco de dados que não é alterada com frequência.

O cache de saída é desnecessário para arquivos estáticos, como arquivos HTML, JPG ou GIF, e pode causar mais sobrecarga de memória para páginas dinâmicas ASP.NET ou PHP que leem de um banco de dados que é alterado com frequência.

Compatibilidade

Versão Observações
IIS 10.0 O elemento <caching> não foi modificado no IIS 10.0.
IIS 8.5 O elemento <caching> não foi modificado no IIS 8.5.
IIS 8.0 O elemento <caching> não foi modificado no IIS 8.0.
IIS 7.5 O elemento <caching> não foi modificado no IIS 7.5.
IIS 7.0 O elemento <caching> foi introduzido no IIS 7.0.
IIS 6,0 N/D

Instalação

O elemento <caching> está incluído na instalação padrão do IIS 7.

Instruções

Como configurar o cache de saída de página

  1. Abra o Gerenciador dos Serviços de Informações da Internet (IIS):

    • Caso você esteja usando o Windows Server 2012 ou o Windows Server 2012 R2:

      • Na barra de tarefas, clique em Gerenciador do Servidor, em Ferramentas e em Gerenciador dos Serviços de Informações da Internet (IIS).
    • Se você estiver usando o Windows 8 ou Windows 8.1:

      • Mantenha pressionada a tecla Windows, pressione a letra X e clique em Painel de Controle.
      • Clique em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
    • Caso você esteja usando o Windows Server 2008 ou o Windows Server 2008 R2:

      • Na barra de tarefas, clique em Iniciar, vá para Ferramentas Administrativas e clique em Gerenciador dos Serviços de Informações da Internet (IIS).
    • Se você estiver usando o Windows Vista ou Windows 7:

      • Na barra de tarefas, clique em Iniciar e, depois, em Painel de Controle.
      • Clique duas vezes em Ferramentas Administrativas e clique duas vezes em Gerenciador dos Serviços de Informações da Internet (IIS).
  2. No painel Conexões, acesse a conexão, o site, o aplicativo ou o diretório para o qual você deseja configurar o cache de saída da página.

  3. No painel Página Inicial, role até Cache de Saída e clique duas vezes em Cache de Saída.
    Screenshot of Output Caching selected in the Default Web Site Home pane.

  4. No painel Ações, clique em Adicionar...

  5. Na caixa de diálogo Adicionar Regra de Cache, digite a extensão de nome de arquivo que você deseja armazenar em cache na caixa Extensão de nome de arquivo e selecione a opção Cache no modo de usuário, a opção Cache no modo kernel, ou ambas.

  6. Selecione as opções que deseja usar para cache e clique em OK.
    Screenshot of the Add Cache Rule dialog with the specified options.

Configuração

Você pode configurar o elemento <caching> no nível do servidor no arquivo ApplicationHost.config ou no nível do site, do aplicativo ou do diretório em um arquivo Web.config.

Atributos

Atributo Descrição
enabled Atributo booliano opcional.

Especifica se o cache de saída da página está habilitado.

O valor padrão é true.
enableKernelCache Atributo booliano opcional.

Especifica se o cache de kernel está habilitado.

O valor padrão é true.
maxCacheSize Atributo uint opcional.

Especifica o tamanho máximo do cache de saída.

Observação: essa configuração é efetiva somente no nível do arquivo ApplicationHost.config. Se você definir essa propriedade em um nível inferior, ela não terá efeito.

O valor padrão é 0.
maxResponseSize Atributo uint opcional.

Especifica o tamanho máximo da resposta que pode ser armazenado em cache.

Observação: essa configuração é efetiva somente no nível do arquivo ApplicationHost.config. Se você definir essa propriedade em um nível inferior, ela não terá efeito.

O valor padrão é 262144.

Elementos filho

Elemento Descrição
profiles Elemento opcional.

Contém um grupo de configurações de cache de saída que podem ser aplicadas a páginas ASP.NET.

Exemplo de configuração

O exemplo de configuração a seguir habilita o cache no modo de usuário e o cache no modo kernel, ambos habilitados por padrão no IIS 7.0. Ele também usa o elemento <add> contido pelo elemento <profiles> para habilitar o cache de saída para arquivos com a extensão de nome de arquivo .asp. Ele também usa o atributo policy para armazenar em cache a página até que ela seja alterada; ele faz o mesmo para o cache de kernel usando o atributo kernelCachePolicy.

<configuration>
   <system.webServer>
      <caching enabled="true" enableKernelCache="true">
         <profiles>
            <add extension=".asp" policy="CacheUntilChange" kernelCachePolicy="CacheUntilChange" />
         </profiles>
      </caching>
   </system.webServer>
</configuration>

O exemplo de código a seguir define o tamanho máximo do cache de saída como 1 gigabyte e define o tamanho máximo de uma resposta que pode ser armazenada no cache de saída como 512 quilobytes.

<configuration>
   <system.webServer>
      <caching enabled="true" enableKernelCache="true" maxCacheSize="1000" maxResponseSize="512000"/>
   </system.webServer>
</configuration>

Exemplo de código

Os exemplos a seguir configuram o cache de saída de página para arquivos com a extensão de nome de arquivo .asp e configuram o IIS para armazenar em cache no modo de usuário e no modo kernel até que os arquivos ASP sejam alterados.

AppCmd.exe

appcmd.exe set config -section:system.webServer/caching /+"profiles.[extension='asp',policy='CacheUntilChange',kernelCachePolicy='CacheUntilChange']" /commit:apphost

Observação

Defina o parâmetro commit para apphost quando usar AppCmd.exe para definir essas configurações. Isso confirma as definições de configuração para a seção de local apropriado no arquivo ApplicationHost.config.

C#

using System;
using System.Text;
using Microsoft.Web.Administration;

internal static class Sample {
   private static void Main() {
      using(ServerManager serverManager = new ServerManager()) { 
         Configuration config = serverManager.GetApplicationHostConfiguration();
         ConfigurationSection cachingSection = config.GetSection("system.webServer/caching");
         ConfigurationElementCollection profilesCollection = cachingSection.GetCollection("profiles");

         ConfigurationElement addElement = profilesCollection.CreateElement("add");
         addElement["extension"] = @"asp";
         addElement["policy"] = @"CacheUntilChange";
         addElement["kernelCachePolicy"] = @"CacheUntilChange";
         profilesCollection.AddAt(0, addElement);

         serverManager.CommitChanges();
      }
   }
}

VB.NET

Imports System
Imports System.Text
Imports Microsoft.Web.Administration

Module Sample
   Sub Main()
      Dim serverManager As ServerManager = New ServerManager
      Dim config As Configuration = serverManager.GetApplicationHostConfiguration
      Dim cachingSection As ConfigurationSection = config.GetSection("system.webServer/caching")
      Dim profilesCollection As ConfigurationElementCollection = cachingSection.GetCollection("profiles")
      Dim addElement As ConfigurationElement = profilesCollection.CreateElement("add")
      addElement("extension") = "asp"
      addElement("policy") = "CacheUntilChange"
      addElement("kernelCachePolicy") = "CacheUntilChange"
      profilesCollection.AddAt(0, addElement)
      serverManager.CommitChanges()
   End Sub
End Module

JavaScript

var adminManager = new ActiveXObject('Microsoft.ApplicationHost.WritableAdminManager');
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST";
var cachingSection = adminManager.GetAdminSection("system.webServer/caching", "MACHINE/WEBROOT/APPHOST");
var profilesCollection = cachingSection.ChildElements.Item("profiles").Collection;

var addElement = profilesCollection.CreateNewElement("add");
addElement.Properties.Item("extension").Value = "asp";
addElement.Properties.Item("policy").Value = "CacheUntilChange";
addElement.Properties.Item("kernelCachePolicy").Value = "CacheUntilChange";
profilesCollection.AddElement(addElement, 0);

adminManager.CommitChanges();

VBScript

Set adminManager = createObject("Microsoft.ApplicationHost.WritableAdminManager")
adminManager.CommitPath = "MACHINE/WEBROOT/APPHOST"
Set cachingSection = adminManager.GetAdminSection("system.webServer/caching", "MACHINE/WEBROOT/APPHOST")
Set profilesCollection = cachingSection.ChildElements.Item("profiles").Collection

Set addElement = profilesCollection.CreateNewElement("add")
addElement.Properties.Item("extension").Value = "asp"
addElement.Properties.Item("policy").Value = "CacheUntilChange"
addElement.Properties.Item("kernelCachePolicy").Value = "CacheUntilChange"
profilesCollection.AddElement addElement, 0

adminManager.CommitChanges()