如何缓存azure blob存储文件

时间:2017-10-02 08:50:07

标签: azure caching webclient azure-storage-blobs

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

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

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

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

1 个答案:

答案 0 :(得分:2)

  

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

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

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

由于您使用的是Windows客户端应用程序,因此您可以将容器公共访问级别设置为仅限Blob的公共读取访问权限,或者使用对容器的有限权限生成SAS令牌,然后您可以使用{ {3}}并按照以下代码从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 Client Library for .NET来管理存储资源。此外,您还可以利用ContentMD5属性,但它有一些限制,有关详细信息,请参阅Azure Storage Explorer