销售电话: 1-800-867-1380

如何在 Azure 内容传送网络 (CDN) 中管理 Blob 内容有效期

更新时间: 2014年4月

从 Azure CDN 缓存获益最多的 Blob 是在其生存时间 (TTL) 期限内频繁访问的 Blob。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 标头值。标头或属性的值应指定以秒为单位的适当值。例如,要将最大缓存期设置为一年,可以将请求标头指定为 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 托管库创建一个容器,将其权限设置为公共访问,并在该容器内创建一个 Blob。它还通过对 Blob 设置 Cache-Control 标头显式指定了所需的刷新间隔。

假设已如上所述启用了 CDN,CDN 将缓存所创建的 Blob。请务必使用你自己的存储帐户和访问密钥指定你的帐户凭据:

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 这样的工具检查请求和响应的详细信息。

另请参阅

本文是否对您有所帮助?
(1500 个剩余字符)
感谢您的反馈
显示:
© 2014 Microsoft