有没有办法通过.NET使用CDN更改Azure存储帐户中的缓存控制?
我有一个新的文件上传到blob存储的方法,这个方法也更新同名文件的内容。
问题是,当我更新文件内容时,CDN端点会返回缓存的旧内容。
我的想法是,我设置缓存控制10秒,然后缓存内容刷新与实际内容,但它不工作。
在Azure门户中,我看到设置了缓存控制,但缓存内容不刷新
我该怎么办?谢谢.
我的PanderadFilesAsync方法
public async Task<ImageInfoDto> UploadFilesAsync(string fileName, Stream fileStream, string contentType, bool isUpdated)
{
try
{
var storageAccount =
CloudStorageAccount
.Parse(_configuration["StorageAccountConnectionString"]);
var blobClient = storageAccount.CreateCloudBlobClient();
var container =
blobClient.GetContainerReference(_configuration["BlobStorageContainerName"]);
var cdnEndpoint = _configuration["CdnEndpoint"];
var blob = container.GetBlockBlobReference(fileName);
using var ms = new MemoryStream();
fileStream.Position = 0;
await fileStream.CopyToAsync(ms);
ms.Position = 0;
await blob.UploadFromStreamAsync(ms);
if (isUpdated)
{
blob.Properties.CacheControl = "s-maxage=10";
}
blob.Properties.ContentType = contentType;
await blob.SetPropertiesAsync();
return new ImageInfoDto
{
StorageUrl = blob.Uri.ToString(),
CdnUrl = cdnEndpoint + "/" + container.Name + "/" + fileName,
ContentType = contentType
};
}
catch (Exception ex)
{
_logger.LogError(ex, "Failed");
}
}
1条答案
按热度按时间t0ybt7op1#
CDN在更新Azure Blob存储中的文件时不刷新缓存内容可能是由于CDN的缓存设置。在blob对象上设置
CacheControl
属性是正确的,但CDN可能有自己的缓存配置,这会影响行为。要在更新文件内容时强制CDN刷新其缓存,您可以使用缓存破坏技术。一种常见的方法是在请求文件时将唯一的查询参数附加到URL。这使得CDN将请求视为新请求并获取文件的最新版本。
输出: