Gerenciar a expiração de conteúdo da Web na Rede de Entrega de Conteúdo do Azure

Os arquivos de servidores Web de origem acessíveis publicamente podem ser armazenados em cache na Rede de Entrega de Conteúdo do Azure até que seu tempo de vida (TTL) passe. O TTL é determinado pelo Cache-Control cabeçalho na resposta HTTP do servidor de origem. Este artigo descreve como definir Cache-Control cabeçalhos para o recurso Aplicativos Web do Serviço de Aplicativo do Microsoft Azure, Serviços de Nuvem do Azure, aplicativos de ASP.NET e sites do IIS (Serviços de Informações da Internet), todos configurados de forma semelhante. Você pode definir o Cache-Control cabeçalho usando arquivos de configuração ou programaticamente.

Você também pode controlar as configurações de cache no portal do Azure definindo regras de cache de rede de entrega de conteúdo. Se você criar uma ou mais regras de cache e definir seu comportamento de cache como Substituir ou Ignorar cache, as configurações de cache fornecidas pela origem discutidas neste artigo serão ignoradas. Para obter informações sobre conceitos gerais de cache, consulte Como o cache funciona.

Gorjeta

Você pode optar por não definir TTL em um arquivo. Nesse caso, a Rede de Entrega de Conteúdo do Azure aplica automaticamente um TTL padrão de sete dias, a menos que você tenha configurado regras de cache no portal do Azure. Este TTL padrão aplica-se apenas a otimizações gerais de entrega na Web. Para otimizações de arquivos grandes, o TTL padrão é de um dia e, para otimizações de streaming de mídia, o TTL padrão é de um ano.

Para obter mais informações sobre como a Rede de Entrega de Conteúdo do Azure funciona para acelerar o acesso a arquivos e outros recursos, consulte Visão geral da Rede de Entrega de Conteúdo do Azure.

Definindo cabeçalhos de Controle de Cache usando regras de cache de rede de entrega de conteúdo

O método preferencial para definir o cabeçalho de Cache-Control um servidor Web é usar regras de cache no portal do Azure. Para obter mais informações sobre regras de cache de rede de entrega de conteúdo, consulte Controlar o comportamento de cache da Rede de Entrega de Conteúdo do Azure com regras de cache.

Nota

As regras de cache estão disponíveis apenas para o Azure CDN Standard a partir de perfis Edgio . Para perfis CDN Premium do Azure a partir de Edgio, você deve usar o mecanismo de regras da Rede de Entrega de Conteúdo do Azure no portal Gerenciar para obter funcionalidade semelhante.

Para navegar até a página de regras de cache da CDN:

  1. No portal do Azure, selecione um perfil de rede de entrega de conteúdo e, em seguida, selecione o ponto de extremidade para o servidor Web.

  2. No painel esquerdo, em Definições, selecione Regras de colocação em cache.

    Captura de tela do botão de regras de cache da rede de entrega de conteúdo.

    É apresentada a página Regras de colocação em cache.

    Captura de tela da página de cache da rede de distribuição de conteúdo.

Para definir os cabeçalhos Cache-Control de um servidor Web usando regras de cache global:

  1. Em Regras globais de cache, defina Comportamento de cache de cadeia de caracteres de consulta como Ignorar cadeias de caracteres de consulta e defina Comportamento de cache como Substituir.

  2. Para Duração da expiração do cache, digite 3600 na caixa Segundos ou 1 na caixa Horas.

    Captura de tela do exemplo de regras de cache global da rede de entrega de conteúdo.

    Esta regra de cache global define uma duração de cache de uma hora e afeta todas as solicitações para o ponto de extremidade. Ele substitui qualquer Cache-Control cabeçalho HTTP que Expires é enviado pelo servidor de origem especificado pelo ponto de extremidade.

  3. Selecione Guardar.

Para definir os cabeçalhos Cache-Control de um arquivo do servidor Web usando regras de cache personalizadas:

  1. Em Regras de cache personalizadas, crie duas condições de correspondência:

    1. Para a primeira condição de correspondência, defina Condição de correspondência como Caminho e insira /webfolder1/* para Valor de correspondência. Defina o comportamento de cache como Substituir e digite 4 na caixa Dias .

    2. Para a segunda condição de correspondência, defina Condição de correspondência como Caminho e insira /webfolder1/file1.txt para Valor de correspondência. Defina o comportamento de cache como Substituir e digite 2 na caixa Dias .

    Captura de tela do exemplo de regras de cache personalizado da rede de entrega de conteúdo.

    A primeira regra de cache personalizada define uma duração de cache de quatro dias para todos os /webfolder1 arquivos na pasta no servidor de origem especificado pelo seu ponto de extremidade. A segunda regra substitui a primeira regra apenas para o file1.txt arquivo e define uma duração de cache de dois dias para ele.

  2. Selecione Guardar.

Definindo cabeçalhos Cache-Control usando arquivos de configuração

Para conteúdo estático, como imagens e folhas de estilo, você pode controlar a frequência de atualização modificando os arquivos de configuração applicationHost.config ou Web.config para seu aplicativo Web. Para definir o Cache-Control cabeçalho do seu conteúdo, use o <system.webServer>/<staticContent>/<clientCache> elemento em qualquer um dos arquivos.

Usando arquivos ApplicationHost.config

O arquivo ApplicationHost.config é o arquivo raiz do sistema de configuração do IIS. As definições de configuração em um arquivo ApplicationHost.config afetam todos os aplicativos no site, mas são substituídas pelas configurações de quaisquer arquivos Web.config existentes para um aplicativo Web.

Usando arquivos Web.config

Com um arquivo Web.config , você pode personalizar a maneira como todo o seu aplicativo Web ou um diretório específico em seu aplicativo Web se comporta. Normalmente, você tem pelo menos um arquivo Web.config na pasta raiz do seu aplicativo Web. Para cada arquivo Web.config em uma pasta específica, as definições de configuração afetam tudo nessa pasta e suas subpastas, a menos que sejam substituídas no nível da subpasta por outro arquivo Web.config .

Por exemplo, você pode definir um <clientCache> elemento em um arquivo Web.config na pasta raiz do seu aplicativo Web para armazenar em cache todo o conteúdo estático do seu aplicativo Web por três dias. Você também pode adicionar um arquivo Web.config em uma subpasta com conteúdo mais variável (por exemplo, \frequent) e definir seu <clientCache> elemento para armazenar em cache o conteúdo da subpasta por seis horas. O resultado final é que o conteúdo de todo o site é armazenado em cache por três dias, exceto qualquer conteúdo no \frequent diretório, que é armazenado em cache por apenas seis horas.

O exemplo de arquivo de configuração XML a seguir mostra como definir o <clientCache> elemento para especificar uma idade máxima de três dias:

<configuration>
    <system.webServer>
        <staticContent>
            <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="3.00:00:00" />
        </staticContent>
    </system.webServer>
</configuration>

Para usar o atributo cacheControlMaxAge , você deve definir o valor do atributo cacheControlMode como UseMaxAge. Essa configuração fez com que o cabeçalho HTTP e a diretiva, Cache-Control: max-age=<nnn>, fossem adicionados à resposta. O formato do valor de timespan para o atributo cacheControlMaxAge é <days>.<hours>:<min>:<sec>. Seu valor é convertido em segundos e é usado como o valor da Cache-Controlmax-age diretiva. Para obter mais informações sobre o <clientCache> elemento , consulte Client Cache <clientCache>.

Definindo cabeçalhos de controle de cache programaticamente

Para aplicativos ASP.NET, você controla o comportamento de cache da rede de entrega de conteúdo programaticamente definindo a propriedade HttpResponse.Cache da API .NET. Para obter informações sobre a propriedade HttpResponse.Cache, consulte Propriedade HttpResponse.Cache e Classe HttpCachePolicy.

Para armazenar programaticamente em cache o conteúdo do aplicativo no ASP.NET, execute estas etapas:

  1. Verifique se o conteúdo está marcado como armazenável em cache definindo HttpCacheability como Public.
  2. Defina um validador de cache chamando um dos seguintes HttpCachePolicy métodos:
    • Chamada SetLastModified para definir um valor de carimbo de data/hora para o Last-Modified cabeçalho.
    • Chamada SetETag para definir um valor para o ETag cabeçalho.
  3. Opcionalmente, especifique um tempo de expiração do cache chamando SetExpires para definir um valor para o Expires cabeçalho. Caso contrário, aplicam-se as heurísticas de cache padrão descritas anteriormente neste documento.

Por exemplo, para armazenar conteúdo em cache por uma hora, adicione o seguinte código C#:

// Set the caching parameters.
Response.Cache.SetExpires(DateTime.Now.AddHours(1));
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetLastModified(DateTime.Now);

Testando o cabeçalho Cache-Control

Você pode verificar facilmente as configurações de TTL do seu conteúdo da Web. Com as ferramentas de desenvolvedor do navegador, teste se o conteúdo da Web inclui o cabeçalho da Cache-Control resposta. Você também pode usar uma ferramenta como wget, Postman ou Fiddler para examinar os cabeçalhos de resposta.

Passos Seguintes