azure - 如何缓存azure blob存储文件

标签 azure caching webclient azure-blob-storage

我有大约 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/

相关文章:

python - 如何为不同的蜘蛛设置相同的缓存文件夹,现在scrapy在缓存目录中为每个蜘蛛创建子文件夹

php - Laravel 5 缓存/分页问题

android - 离线时从缓存加载 webview

java - 基于网络的点对点客户端使用什么技术

azure - 限制Azure功能上的服务器数量(消耗计划)

azure - 定义 Azure AD B2C 与 B2B 的用途和差异

python - 如何在python中将azure自定义视觉注释格式更改为yolo v8格式

node.js - 在 Azure Bot Framework (Nodejs) 中使用 session.send 向对话发送 Webhook 响应

c# - 如何在 WebClient 中设置 User-Agent

c# - WebClient 在哪个线程上引发事件?