如何缓存 azure blob 存储文件

How to cache azure blob storage files

我有大约 6 个设置文件(xml 或 json),我想将它们存储在 Azure 中,但在我的 Windows 客户端应用程序中使用。我打算将它们存储在 blob 存储中并使用以下代码下载它们:

var myWebClient = new WebClient();
myWebClient.DownloadFile(Address, file.FullName);

设置文件不会经常更改。如何将文件缓存到本地,以免每次都下载它们?

有更好的方法吗?我应该使用其他一些 Azure 服务吗?

The settings files will not change very often. How can I cache the files locally so that they aren't downloaded every time?

据我了解,您可以使用 blob 文件的 ETag 属性 作为标识符,每次更新时它都会更新对您的 blob 文件执行操作。

在你的 Windows 客户端应用程序中加载设置文件之前,你可以从本地检查 ETag 并与服务器端的相关值进行比较,如果 ETag 不匹配,你可以将设置下载到本地进行更新,然后加载更新的设置文件。

由于您使用的是 Windows 客户端应用程序,因此您可以将容器 public 访问级别设置为 Public 仅对 blob 进行读取访问 或针对您的容器生成具有有限权限的 SAS 令牌,然后您可以使用 Azure Storage Client Library for .NET 并按照以下代码从 blob 服务中检索 ETag 属性,如下所示:

//access container with public access level to blobs
//var container = new CloudBlobContainer(new Uri("https://{storage-name}.blob.core.windows.net/{container-name}"));

//access container with SAS token
var container = new CloudBlobContainer(new Uri("https://{storage-name}.blob.core.windows.net/{container-name}?{SAS-token}"));

CloudBlob blockBlob = container.GetBlobReference("setting.json");
blockBlob.FetchAttributes();
string etag=blockBlob.Properties.ETag;

使用WebClient下载设置文件时,您可以在本地设置文件的文件名中设置Etag值(例如{filename}-{etag}.json ).

此外,您可以利用 Azure Storage Explorer to manage your storage resources. Moreover, you could also leverage the ContentMD5 property, but it has some limitations, for more details you could refer to here