Exportar (0) Imprimir
Expandir Tudo

Como gerenciar o vencimento do conteúdo de blob na Rede de Fornecimento de Conteúdo (CDN) do Azure

Atualizado: abril de 2014

Os blobs que mais se beneficiam do cache de CDN do são aqueles que são acessados frequentemente durante sua vida útil (TTL). Um blob permanece no cache pelo período de TTL e é atualizado pelo serviço de blob depois que esse tempo é transcorrido. Em seguida, o processo se repete.

Você tem duas opções para controlar a TTL.

  1. Não definir os valores de cache dessa forma usando a TTL padrão de 7 dias.

  2. Definir explicitamente a propriedade x-ms-blob-cache-control em uma solicitação Colocar Blob (API REST), Colocar lista de blocos (API REST) ou Definir propriedades de blob (API REST) ou usar a Biblioteca Gerenciada do para definir a propriedade BlobProperties.CacheControl. Configurar essa propriedade define o valor do cabeçalho Cache-Control para o blob. O valor do cabeçalho ou da propriedade deve especificar o valor apropriado em segundos. Por exemplo, para definir o período máximo do cache para um ano, você pode especificar o cabeçalho da solicitação como x-ms-blob-cache-control: public, max-age=31556926. Para obter detalhes sobre como definir cabeçalhos de cache, consulte Especificação HTTP/1.1.

Todo o conteúdo que você deseja armazenar em cache por meio da CDN deve ser armazenado em sua conta de armazenamento do como um blob publicamente acessível. Para obter mais detalhes sobre o serviço Blob do , consulte Conceitos do serviço Blob.

Existem algumas maneiras diferentes de trabalhar com conteúdo no serviço Blob:

  • Usando a API gerenciada fornecida pela Azure Developer References.

  • Usando uma ferramenta de gerenciamento de armazenamento de terceiros.

  • Usando a API REST dos Serviços de Armazenamento do .

O exemplo de código a seguir é um aplicativo de console que usa a Biblioteca Gerenciada do para criar um contêiner, definir as permissões para acesso público e criar um blob no contêiner. Ele também especifica explicitamente um intervalo desejado de atualização definindo o cabeçalho Cache-Control no blob.

Supondo que você habilitou a CDN, conforme mostrado acima, o blob que é criado será armazenado em cache pela CDN. Não se esqueça de especificar as credenciais da conta usando sua própria chave de acesso e conta de armazenamento:

using System;
using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.StorageClient;

namespace BlobsInCDN
{
    class Program
    {
        static void Main(string[] args)
        {
            //Specify storage credentials.
            StorageCredentialsAccountAndKey credentials = new StorageCredentialsAccountAndKey("storagesample",
                "m4AHAkXjfhlt2rE2BN/hcUR4U2lkGdCmj2/1ISutZKl+OqlrZN98Mhzq/U2AHYJT992tLmrkFW+mQgw9loIVCg==");
            
            //Create a reference to your storage account, passing in your credentials.
            CloudStorageAccount storageAccount = new CloudStorageAccount(credentials, true);
            
            //Create a new client object, which will provide access to Blob service resources.
            CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

            //Create a new container.
            CloudBlobContainer container = blobClient.GetContainerReference("cdncontent");
            container.CreateIfNotExist();

            //Specify that the container is publicly accessible.
            BlobContainerPermissions containerAccess = new BlobContainerPermissions();
            containerAccess.PublicAccess = BlobContainerPublicAccessType.Container;
            container.SetPermissions(containerAccess);

            //Create a new blob and write some text to it.
            CloudBlob blob = blobClient.GetBlobReference("cdncontent/testblob.txt");
            blob.UploadText("This is a test blob.");

            //Set the Cache-Control header on the blob to specify your desired refresh interval.
            blob.SetCacheControl("public, max-age=31536000");
        }
    }

    public static class BlobExtensions
    {
        //A convenience method to set the Cache-Control header.
        public static void SetCacheControl(this CloudBlob blob, string value)
        {
            blob.Properties.CacheControl = value;
            blob.SetProperties();
        }
    }
}

Teste se o blob está disponível por meio da URL específica da CDN. Para o blob mostrado acima, a URL seria semelhante à seguinte:

http://az1234.vo.msecnd.net/cdncontent/testblob.txt

Se desejado, você pode usar uma ferramenta como wget ou o Fiddler para examinar os detalhes da solicitação e da resposta.

Consulte também

Mostrar:
© 2014 Microsoft