Azure Content Delivery Network で Azure Blob Storage の有効期限を管理する
重要
Azure CDN Standard from Microsoft (クラシック) は、2027 年 9 月 30 日に廃止されます。 サービスの中断を回避するには、2027 年 9 月 30 日までに Azure Front Door の Standard または Premium レベルに Azure CDN Standard from Microsoft (クラシック) プロファイルを移行することが重要です。 詳細については、Azure CDN Standard from Microsoft (クラシック) の廃止に関するページを参照してください。
Azure CDN from Edgio は、2025 年 11 月 4 日に廃止される予定です。 サービスが中断しないようにするには、この日までに Azure Front Door にワークロードを移行する必要があります。 詳細については、「Azure CDN from Edgio の提供終了に関するよくあるご質問」を参照してください。
Azure Storage の Blob Storage サービスは、Azure ベースに元々あって Azure Content Delivery Network と統合されたサービスの 1 つです。 パブリックにアクセス可能な BLOB コンテンツは、その有効期間 (TTL) が経過するまで、Azure Content Delivery Network でキャッシュできます。 TTL は、配信元サーバーからの HTTP 応答の Cache-Control
ヘッダーによって決まります。 この記事では、Azure Storage の BLOB で Cache-Control
ヘッダーを設定する方法のいくつかを示します。
コンテンツ配信ネットワーク キャッシュ規則を設定して、Azure portal からキャッシュの設定を制御することもです。 キャッシュ規則を作成し、そのキャッシュ動作を [オーバーライド] または [キャッシュのバイパス] に設定すると、この記事で説明されている最初に示されたキャッシュ設定は無視されます。 全般的なキャッシュの概念については、「キャッシュのしくみ」をご覧ください。
ヒント
BLOB に TTL を設定しないこともできます。 この場合は、Azure portal でキャッシュ規則を設定していない限り、Azure Content Delivery Network によって既定の 7 日間の TTL が自動的に適用されます。 この既定の TTL は、一般的な Web 配信の最適化に対してのみ適用されます。 大きなファイルの最適化に対する既定の TTL は 1 日、メディア ストリーミングの最適化に対する既定の TTL は 1 年です。
その他のファイルと BLOB へのアクセスを高速化する Azure Content Delivery Network のしくみについて詳しくは、Azure Content Delivery Network の概要に関するページを参照してください。
Azure Blob Storage について詳しくは、「Blob Storage の概要」をご覧ください。
コンテンツ配信ネットワーク キャッシュ規則を使用したキャッシュ制御ヘッダーの設定
BLOB の Cache-Control
ヘッダーを設定するための推奨される方法は、Azure Portal でのキャッシュ規則の使用です。 コンテンツ配信ネットワーク キャッシュ規則について詳しくは、「Azure Content Delivery Network のキャッシュ動作をキャッシュ規則で制御する」を参照してください。
Note
キャッシュ規則は、Azure CDN Standard from Edgio プロファイルでのみ使用できます。 Azure CDN Premium from Edgio プロファイルの場合は、同様の機能に対して管理ポータルで Azure Content Delivery Network ルール エンジンを使用する必要があります。
[CDN キャッシュ規則] ページに移動するには:
Azure portal で、コンテンツ配信ネットワーク プロファイルを選び、BLOB のエンドポイントを選びます。
左側のウィンドウの [設定] で、 [キャッシュ規則] を選択します。
[キャッシュ規則] ページが表示されます。
グローバル キャッシュ規則を使用して BLOB ストレージ サービスの Cache-Control ヘッダーを設定するには:
[グローバル キャッシュ規則] で、 [クエリ文字列のキャッシュ動作] を [クエリ文字列を無視] に設定し、 [キャッシュ動作] を [オーバーライド] に設定します。
[キャッシュの有効期間] として、 [Seconds] (秒) ボックスに「3600」と入力するか、または [時間] ボックスに「1」と入力します。
このグローバル キャッシュ規則は 1 時間のキャッシュ有効期間を設定し、エンドポイントへのすべての要求に影響を与えます。 これは、エンドポイントで指定された配信元サーバーによって送信されるすべての
Cache-Control
またはExpires
HTTP ヘッダーをオーバーライドします。[保存] を選択します。
カスタム キャッシュ規則を使用して BLOB ファイルの Cache-Control ヘッダーを設定するには:
[Custom caching rules] (カスタム キャッシュ規則) で、次の 2 つの一致条件を作成します。
A. 最初の一致条件では、[一致条件] を [パス] に設定し、[一致する値] として
/blobcontainer1/*
を入力します。 [キャッシュ動作] を [オーバーライド] に設定し、 [時間] ボックスに「4」と入力します。B. 2 番目の一致条件では、[一致条件] を [パス] に設定し、[一致する値] として
/blobcontainer1/blob1.txt
を入力します。 [キャッシュ動作] を [オーバーライド] に設定し、 [時間] ボックスに「2」と入力します。最初のカスタム キャッシュ規則は、エンドポイントで指定された配信元サーバー上の
/blobcontainer1
フォルダー内のすべての BLOB ファイルに対して 4 時間のキャッシュ有効期間を設定します。 2 番目の規則はblob1.txt
BLOB ファイルについてのみ最初の規則をオーバーライドし、そのファイルに対して 2 時間のキャッシュ有効期間を設定します。[保存] を選択します。
Azure PowerShell を使った Cache-Control ヘッダーの設定
注意
Azure を操作するには、Azure Az PowerShell モジュールを使用することをお勧めします。 作業を始めるには、「Azure PowerShell をインストールする」を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。
Azure PowerShell は、Azure の各種サービスを管理する最も簡単で最も強力な方法の 1 つです。 Get-AzStorageBlob
コマンドレットを使用して 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 Storage クライアント ライブラリを使用して 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" });
}
}
ヒント
「Azure Blob Storage Samples for .NET 」(.NET 用 Azure Blob Storage のサンプル) には、他にも多くの使用可能な .NET コード サンプルがあります。
他の方法を使った Cache-Control ヘッダーの設定
Azure Storage Explorer
Azure Storage Explorer を使うと、CacheControl のようなプロパティなどの Blob Storage リソースを表示して編集できます。
Azure Storage Explorer で BLOB の CacheControl プロパティを更新するには、以下の操作を行います。
- BLOB を選択し、コンテキスト メニューから [プロパティ] を選択します。
- 下にスクロールして CacheControl プロパティを表示させます。
- 値を入力してから、 [保存] を選択します。
Azure CLI
Azure CLI を使用して、コマンド ラインから Azure BLOB リソースを管理することができます。 Azure CLI で BLOB をアップロードするときにキャッシュ制御ヘッダーを設定するには、-p
スイッチを使って cacheControl プロパティを設定します。 次の例では、TTL を 1 時間 (3,600 秒) に設定する方法を示します。
azure storage blob upload -c <connectionstring> -p cacheControl="max-age=3600" .\<blob name> <container name> <blob name>
Azure Storage サービス REST API
Azure Storage サービス REST API を使うと、要求で次の操作を使って x-ms-blob-cache-control プロパティを明示的に設定できます。
Cache-Control ヘッダーのテスト
BLOB の TTL 設定を簡単に確認できます。 ブラウザーの開発者ツールを使って、BLOB に Cache-Control
応答ヘッダーが含まれているかどうかをテストします。 Wget や Fiddler などのツールを使用して応答ヘッダーを確認することもできます。