你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

在 Azure 内容分发网络中管理 Azure Blob 存储的到期时间

在多个与 Azure 内容分发网络集成的基于 Azure 的源中,Azure 存储中的 Blob 存储服务是其中一个。 任何可公开访问的 blob 内容均可在 Azure 内容分发网络中进行缓存,直到其生存时间 (TTL) 结束。 TTL 由来自源服务器的 HTTP 响应中的 Cache-Control 标头决定。 本文介绍了几种可以在 Azure 存储中的 Blob 上设置 Cache-Control 标头的方式。

此外,还可以通过设置内容分发网络缓存规则,从 Azure 门户控制缓存设置。 如果创建了一个缓存规则并将其缓存行为设置为“替代”或“绕过缓存”,则将忽略本文中讨论的源提供的缓存设置。 有关一般缓存概念的信息,请参阅缓存工作原理

提示

可以选择不对 blob 设置 TTL。 在这种情况下,Azure 内容分发网络将自动应用默认 TTL(七天),除非已在 Azure 门户中设置了缓存规则。 此默认 TTL 仅适用于常规 Web 交付优化。 对于大型文件优化,默认 TTL 为一天;对于媒体流优化,默认 TTL 为一年。

有关 Azure 内容分发网络如何加速访问 blob 和其他文件的详细信息,请参阅 Azure 内容分发网络概述

有关 Azure Blob 存储的详细信息,请参阅 Blob 存储简介

使用内容分发网络缓存规则设置 Cache-Control 标头

设置 blob 的 Cache-Control 标头的首选方法是使用 Azure 门户中的缓存规则。 有关内容分发网络缓存规则的详细信息,请参阅使用缓存规则控制 Azure 内容分发网络缓存行为

注意

缓存规则仅适用于“Edgio 提供的标准 Azure CDN”配置文件。 对于“Edgio 提供的高级 Azure CDN”配置文件,必须在“管理”门户中使用 Azure 内容分发网络规则引擎来获得类似的功能

导航到 CDN 缓存规则页

  1. 在 Azure 门户中,选择一个内容分发网络配置文件,然后选择 blob 的终结点。

  2. 在左窗格中的“设置”下,选择“缓存规则”。

    内容分发网络缓存规则按钮的屏幕截图。

    “缓存规则”页随即出现。

    内容分发网络缓存页的屏幕截图。

使用全局缓存规则设置 Blob 存储服务的 Cache-Control 标头:

  1. 在“全局缓存规则”下,将“查询字符串缓存行为”设置为“忽略查询字符串”,将“缓存行为”设置为“覆盖”。

  2. 对于“缓存过期持续时间”,在“秒”框中输入 3600,或者在“小时”框中输入 1。

    内容分发网络全局缓存规则示例的屏幕截图。

    此全局缓存规则设置为期一小时的缓存持续时间,并会影响发送到终结点的所有请求。 它会替代由终结点指定的源服务器发送的所有 Cache-ControlExpires HTTP 标头。

  3. 选择“保存”。

使用自定义缓存规则设置 Blob 文件的 Cache-Control 标头:

  1. 在“自定义缓存规则”下,创建两个匹配条件:

    A. 对于第一个匹配条件,将“匹配条件”设置为“路径”,对于“匹配值”输入 /blobcontainer1/* 将“缓存行为”设置为“替代”,并在“小时”框中输入 4。

    B. 对于第二个匹配条件,将“匹配条件”设置为“路径”,对于“匹配值”输入 /blobcontainer1/blob1.txt 将“缓存行为”设置为“替代”,并在“小时”框中输入 2。

    内容分发网络自定义缓存规则示例的屏幕截图。

    第一个自定义缓存规则为终结点指定的源服务器上的 /blobcontainer1 文件夹中的所有 blob 文件设置为期四小时的缓存持续时间。 第二个规则仅替代 blob1.txt blob 文件的第一个规则,并且为它设置为期两小时的缓存持续时间。

  2. 选择“保存”。

使用 Azure PowerShell 设置 Cache-Control 标头

注意

建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 Azure PowerShell 以开始使用。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

Azure PowerShell 是管理 Azure 服务的最快捷且最强大的方式之一。 使用 Get-AzStorageBlobcmdlet 来获取对 blob 的引用,并设置 .ICloudBlob.Properties.CacheControl 属性。

例如:

# Create a storage context
$context = New-AzStorageContext -StorageAccountName "<storage account name>" -StorageAccountKey "<storage account key>"

# Get a reference to the blob
$blob = Get-AzStorageBlob -Context $context -Container "<container name>" -Blob "<blob name>"

# Set the CacheControl property to expire in 1 hour (3600 seconds)
$blob.ICloudBlob.Properties.CacheControl = "max-age=3600"

# Send the update to the cloud
$blob.ICloudBlob.SetProperties()

提示

还可以使用 PowerShell 来管理内容分发网络配置文件和终结点

使用 .NET 设置 Cache-Control 标头

要使用 .NET 代码指定 Blob 的 Cache-Control 标头,请使用适用于 .NET 的 Azure 存储客户端库来设置 BlobHttpHeaders.CacheControl 属性。

例如:

    class Program
    {
        const string containerName = "<container name>";
        const string blobName = "<blob name>";
        const string connectionString = "<storage connection string>";
        static void Main()
        {
            // Retrieve storage account information from connection string
            BlobContainerClient container = new BlobContainerClient(connectionString, containerName);

            // Create a blob client for interacting with the blob service.
            BlobClient blob = container.GetBlobClient(blobName);

            // Set the CacheControl property to expire in 1 hour (3600 seconds)
            blob.SetHttpHeaders(new BlobHttpHeaders {CacheControl = "max-age=3600" });
        }
    }

提示

更多 .NET 代码示例可在适用于.NET 的 Azure Blob 存储示例中找到。

使用其他方法设置 Cache-Control 标头

Azure 存储资源管理器

借助 Azure 存储资源管理器,可以查看和编辑 Blob 存储资源,包括 CacheControl 等属性

若要使用 Azure 存储资源管理器更新 blob 的 CacheControl 属性:

  1. 选择 blob,然后从上下文菜单中选择“属性”
  2. 向下滚动到 CacheControl 属性。
  3. 输入一个值,然后选择“保存”

Azure 存储资源管理器属性

Azure CLI

可以通过 Azure CLI 从命令行管理 Azure blob 资源。 若要在使用 Azure CLI 上传 Blob 时设置 cache-control 标头,可使用 -p 开关设置 cacheControl 属性。 以下示例说明如何将 TTL 设置为 1 小时(3600 秒):

azure storage blob upload -c <connectionstring> -p cacheControl="max-age=3600" .\<blob name> <container name> <blob name>

Azure 存储服务 REST API

通过对请求执行以下操作,可以使用 Azure 存储服务 REST API 来显式设置 x-ms-blob-cache-control 属性

测试 Cache-Control 标头

可以轻松验证 Blob 的 TTL 设置。 使用浏览器的开发人员工具,测试 blob 是否包含 Cache-Control 响应标头。 还可使用 WgetPostmanFiddler 等工具检查响应标头。

后续步骤