Exportar (0) Imprimir
Expandir todo

Cómo administrar la caducidad del contenido de blobs en la Red de entrega de contenido (CDN) de Azure

Actualizado: abril de 2015

Los blobs que más se benefician del almacenamiento en caché de la red CDN de Azure son a los que se obtiene acceso con frecuencia durante su periodo de vida (TTL). Un blob permanece en la caché durante el periodo TTL y, una vez que ha transcurrido ese periodo, el servicio Blob lo actualiza. A continuación, se repite el proceso.

Tiene dos opciones para controlar el TTL.

  1. Por lo tanto, no configure los valores de caché con el TTL predeterminado de 7 días.

  2. Establezca explícitamente la propiedad x-ms-blob-cache-control en Put Blob, Put Block List, en la solicitud Set Blob Properties o utilice la biblioteca administrada de Azure para establecer la propiedad BlobProperties.CacheControl. Al establecer esta propiedad se establece el valor del encabezado Cache-Control para el blob. El valor del encabezado o de la propiedad debe especificar el valor adecuado en segundos. Por ejemplo, para establecer el período de almacenamiento en memoria caché máximo a un año, puede especificar el encabezado de solicitud como x-ms-blob-cache-control: public, max-age=31556926. Para obtener información detallada sobre cómo configurar los encabezados para el almacenamiento en memoria caché, vea Especificación HTTP/1.1.

Cualquier contenido que desee almacenar en memoria caché a través de la red CDN debe almacenarse en la cuenta de almacenamiento de Azure como blob con acceso al público. Para obtener más detalles sobre el servicio Blob de Azure, vea Conceptos del servicio Blob.

Hay distintas formas de trabajar con contenido en el servicio Blob:

  • Mediante la API administrada que proporciona Azure Managed Library Reference.

  • Mediante una herramienta de administración de almacenamiento de terceros.

  • Mediante la API de REST de los servicios de almacenamiento de Azure.

El ejemplo de código siguiente es una aplicación de consola que utiliza la biblioteca administrada de Azure para crear un contenedor, establecer los permisos para acceso público y para crear un blob en el contenedor. También especifica explícitamente un intervalo de actualización según desee estableciendo el encabezado Cache-Control en el blob.

Suponiendo que ha habilitado la red CDN tal como se muestra más arriba, esta almacenará el blob creado en memoria caché. Asegúrese de especificar las credenciales de la cuenta mediante su propia cuenta de almacenamiento y clave de acceso:

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();
        }
    }
}

Compruebe que el blob está disponible a través de la dirección URL específica de la red CDN. Para el blob que aparece anteriormente, la dirección URL sería similar a la siguiente:

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

Si lo desea, puede utilizar una herramienta como wget o Fiddler para examinar los detalles de la solicitud y de la respuesta.

Vea también

Mostrar:
© 2015 Microsoft