エクスポート (0) 印刷
すべて展開

Azure コンテンツ配信ネットワーク (CDN) で BLOB コンテンツの有効期限を管理する方法

更新日: 2015年4月

Azure CDN キャッシュの利点を最大限に活用できる BLOB は、BLOB の有効期限 (TTL) 内に頻繁にアクセスされる BLOB です。BLOB は、TTL の間キャッシュに留まった後、時間が経過すると BLOB サービスによって更新されます。その後で、この手順を繰り返します。

TTL を制御するには 2 つの方法があります。

  1. キャッシュの値を設定しないで、既定の TTL である 7 日を使用します。

  2. Put BlobPut Block List (REST API)Set Blob Properties の各要求の 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 Managed Library Reference によって提供されるマネージ API を使用する。

  • サード パーティのストレージ管理ツールを使用する。

  • Azure ストレージ サービス REST API を使用する。

次のコード例はコンソール アプリケーションの例です。このアプリケーションでは、Azure マネージ ライブラリを使用して、コンテナーを作成し、そのコンテナーにパブリック アクセスの権限を設定し、コンテナー内に BLOB を作成します。また、BLOB の Cache-Control ヘッダーを設定して明示的に目的の更新間隔を指定します。

上で示したように 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();
        }
    }
}

BLOB が CDN 固有の URL を介して利用できるかどうかをテストします。上に示した BLOB では、URL は次のようになります。

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

必要な場合は、wget や Fiddler などのツールを使用して、要求と応答の詳細を調べることができます。

関連項目

表示:
© 2015 Microsoft