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
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).
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.
No painel Página Inicial, role até Cache de Saída e clique duas vezes em Cache de Saída.
No painel Ações, clique em Adicionar...
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.
Selecione as opções que deseja usar para cache e clique em OK.
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()