匯出 (0) 列印
全部展開

如何在 Azure 內容傳遞網路 (CDN) 中管理 Blob 內容的到期

更新日期: 2014年4月

在物件存留時間 (TTL) 期限中經常存取的 Blob,才可從 Azure CDN 快取獲得最高的效益。Blob 會在 TTL 期限內存留於快取中,然後在經過該時間後從 Blob 服務重新整理。隨後會重複執行程序。

您有兩個選項可用來控制 TTL。

  1. 請勿設定快取值,而是使用預設的 TTL (7 天)。

  2. 放置 Blob (REST 應用程式開發介面)放置區塊清單 (REST 應用程式開發介面)設定 Blob 屬性 (REST 應用程式開發介面) 要求上明確設定 x-ms-blob-cache-control 屬性,或是使用 Azure Managed 程式庫設定 BlobProperties.CacheControl 屬性。設定此屬性會設定 Blob 的 Cache-Control 標頭值。標頭或屬性的值應該指定以秒為單位的適當值。例如,若要將最大快取期間設定為一年,可以將要求標頭指定為 x-ms-blob-cache-control: public, max-age=31556926。如需有關設定快取標頭的詳細資訊,請參閱 HTTP/1.1 規格

您想要透過 CDN 快取的任何內容都必須在 Azure 儲存體帳戶中儲存為可公開存取的 Blob。如需有關 Azure Blob 服務的詳細資訊,請參閱<Blob 服務概念>。

在 Blob 服務中,您可以透過幾種不同的方式處理內容:

  • 使用 Azure 開發人員參考提供的 Managed API。

  • 使用協力廠商儲存管理工具。

  • 使用 Azure 儲存體服務 REST API。

下列程式碼範例為主控台應用程式,會使用 Azure Managed 程式庫建立容器、設定其公開存取的權限,以及在容器內建立 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();
        }
    }
}

透過 CDN 專屬 URL 測試您的 Blob 是否可用。若是如上所示的 Blob,URL 會類似下列這樣:

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

如有需要,您可以使用像是 wget 或 Fiddler 這類工具檢查要求和回應的詳細資料。

另請參閱

顯示:
© 2014 Microsoft