我有大约 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)访问级别设置为仅对 blob 进行公共(public)读取访问,或者生成对容器具有有限权限的 SAS token ,然后您可以使用 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 来管理您的存储资源。此外,您还可以利用 ContentMD5
属性,但它有一些限制,有关更多详细信息,您可以引用 here 。
关于azure - 如何缓存azure blob存储文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46522298/