영업: 1-800-867-1380

Azure CDN(콘텐츠 배달 네트워크)에서 Blob 콘텐츠 만료를 관리하는 방법

업데이트 날짜: 2014년 4월

Azure CDN 캐싱으로 효과를 보는 Blob는 TTL(Time To Live) 기간 동안 액세스가 자주 발생하는 개체입니다. Blob는 TTL 기간 동안 캐시에 유지되었다가 이 기간이 경과하면 Blob 서비스에 의해 새로 고쳐집니다. 그런 다음 이 프로세스가 반복됩니다.

TTL을 제어하는 두 가지 옵션이 있습니다.

  1. 캐시 값을 설정하지 않고 기본 TTL(7일)을 사용합니다.

  2. Blob 배치(REST API), 블록 목록 배치(REST API) 또는 Blob 속성 설정(REST API) 요청에서 x-ms-blob-cache-control 속성을 명시적으로 설정하거나, Azure 관리 라이브러리를 사용하여 BlobProperties.CacheControl 속성을 설정합니다. 이 속성은 Blob의 Cache-Control 헤더 값을 설정합니다. 헤더 또는 속성의 값은 초 단위로 적절한 값을 지정해야 합니다. 예를 들어 최대 캐싱 기간을 1년으로 설정하려면 요청 헤더를 x-ms-blob-cache-control: public, max-age=31556926으로 지정할 수 있습니다. 캐싱 헤더 설정에 대한 자세한 내용은 HTTP/1.1 사양을 참조하십시오.

CDN을 통해 캐시하려는 모든 콘텐츠는 공개적으로 액세스 가능한 Blob인 Azure 저장소 계정에 저장되어 있어야 합니다. Azure Blob 서비스에 대한 자세한 내용은 Blob 서비스 개념을 참조하십시오.

다음과 같은 몇 가지 방법을 사용하여 Blob 서비스에서 콘텐츠 작업을 수행할 수 있습니다.

  • Azure 개발자 참조에서 제공하는 관리되는 API를 사용합니다.

  • 타사 저장소 관리 도구를 사용합니다.

  • Azure 저장소 서비스 REST API를 사용합니다.

다음 코드 예는 Azure Managed Library를 사용하여 컨테이너를 만들어 공용 액세스에 대한 사용 권한을 설정하고 컨테이너에 Blob를 만드는 콘솔 응용 프로그램입니다. 또한 Cache-Control 헤더를 설정하여 원하는 Blob 업데이트 주기를 설정합니다.

위와 같이 CDN을 설정한 경우 생성된 Blob는 CDN에 의해 캐시됩니다. 이때 사용자의 저장소 계정과 액세스 키를 사용하여 계정 자격 증명을 지정해야 합니다.

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

특정 CDN URL을 통해 Blob를 사용할 수 있는지 테스트합니다. 위에 나온 Blob의 경우 URL은 다음과 유사합니다.

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

필요할 경우 wget 또는 Fiddler와 같은 도구를 사용하여 요청과 응답의 세부 사항을 검토할 수 있습니다.

참고 항목

이 정보가 도움이 되었습니까?
(1500자 남음)
의견을 주셔서 감사합니다.
표시:
© 2014 Microsoft