你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure 内容分发网络中管理 Azure Blob 存储的到期时间
重要
Microsoft Azure CDN Standard(经典版)将于 2027 年 9 月 30 日停用。 为了避免任何服务中断,请务必在 2027 年 9 月 30 日之前将 Microsoft Azure CDN Standard(经典版)配置文件迁移到 Azure Front Door Standard 层或 Premium 层。 有关详细信息,请参阅 Microsoft Azure CDN Standard(经典版)停用。
Edgio Azure CDN 将于 2025 年 11 月 4 日停用。 为了避免服务中断,必须在此日期之前将工作负载迁移到 Azure Front Door。 有关详细信息,请参阅 Edgio Azure CDN 停用常见问题解答。
在多个与 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 缓存规则页:
在 Azure 门户中,选择一个内容分发网络配置文件,然后选择 blob 的终结点。
在左窗格中的“设置”下,选择“缓存规则”。
“缓存规则”页随即出现。
使用全局缓存规则设置 Blob 存储服务的 Cache-Control 标头:
在“全局缓存规则”下,将“查询字符串缓存行为”设置为“忽略查询字符串”,将“缓存行为”设置为“覆盖”。
对于“缓存过期持续时间”,在“秒”框中输入 3600,或者在“小时”框中输入 1。
此全局缓存规则设置为期一小时的缓存持续时间,并会影响发送到终结点的所有请求。 它会替代由终结点指定的源服务器发送的所有
Cache-Control
或Expires
HTTP 标头。选择“保存”。
使用自定义缓存规则设置 Blob 文件的 Cache-Control 标头:
在“自定义缓存规则”下,创建两个匹配条件:
A. 对于第一个匹配条件,将“匹配条件”设置为“路径”,对于“匹配值”输入
/blobcontainer1/*
。 将“缓存行为”设置为“替代”,并在“小时”框中输入 4。B. 对于第二个匹配条件,将“匹配条件”设置为“路径”,对于“匹配值”输入
/blobcontainer1/blob1.txt
。 将“缓存行为”设置为“替代”,并在“小时”框中输入 2。第一个自定义缓存规则为终结点指定的源服务器上的
/blobcontainer1
文件夹中的所有 blob 文件设置为期四小时的缓存持续时间。 第二个规则仅替代blob1.txt
blob 文件的第一个规则,并且为它设置为期两小时的缓存持续时间。选择“保存”。
使用 Azure PowerShell 设置 Cache-Control 标头
注意
建议使用 Azure Az PowerShell 模块与 Azure 交互。 若要开始,请参阅安装 Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az。
Azure PowerShell 是管理 Azure 服务的最快捷且最强大的方式之一。 使用 Get-AzStorageBlob
cmdlet 来获取对 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 属性:
- 选择 blob,然后从上下文菜单中选择“属性”。
- 向下滚动到 CacheControl 属性。
- 输入一个值,然后选择“保存”。
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
响应标头。 还可使用 Wget 或 Fiddler 等工具检查响应标头。