当前位置: 首页 > 知识库问答 >
问题:

如何缓存azure blob存储文件

凌经赋
2023-03-14

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

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

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

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

共有1个答案

祝允晨
2023-03-14

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

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

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

由于您正在使用Windows客户端应用程序,您可以将容器公共访问级别设置为仅对blobs的公共读取访问,或者针对您的容器生成具有有限权限的SAS令牌,然后您可以将Azure存储客户端库用于。NET并按照下面的代码从blob服务中检索< code>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;

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

此外,您可以利用Azure Storage Explorer来管理您的存储资源。此外,您还可以利用< code>ContentMD5属性,但它有一些限制,有关更多详细信息,您可以参考这里。

 类似资料:
  • 我用Infinispan(8.2.4 Final)设置了一个集群缓存存储,使用SoftIndexFileStore进行持久化。 文档中指出,如果条目过期,压缩程序将无法清理清除的条目,磁盘使用量将随着时间的推移而增加。从用户指南: 当条目存储过期时,SIFS无法检测到其中一些条目已过期。因此,不会压缩这样的旧文件(未实现方法AdvancedStore.purgeExpired()。这可能会导致文件

  • 32.6 配置缓存存储 开箱即用,缓存抽象提供了多种存储集成。要使用它们,需要简单地声明一个适当的CacheManager - 一个控制和管理Caches,可用于检索这些存储。 32.6.1 JDK ConcurrentMap-based Cache 基于JDK的Cache实现位于org.springframework.cache.concurrent包下。它允许使用ConcurrentHashM

  • 我用ReactJS构建了一个渐进式Web应用程序,但遇到了一个问题。我正在使用mockApi获取数据。脱机时,我的应用程序不工作,因为服务人员只缓存静态资产。 如何将HTTP GET调用从mockApi保存到缓存存储?

  • 问题内容: 我已经使用了C#Redis缓存。 但我想像这样存储数据 这样一键就可以存储所有客户列表,并且可以轻松地在该列表内搜索,分组,过滤客户数据 欢迎使用或回答 问题答案: 您可以使用ServiceStack.Redis高级IRedisTypedClient Typed API 来管理丰富的POCO类型。 首先为具有以下条件的客户获取类型化的Redis客户端: 这将解决用于管理客户POCO的高

  • 我按照web上一些教程使用redis设置Spring缓存,

  • 问题内容: 我在Firebase上运行了PWA。我的图像文件托管在Firebase存储上。我注意到我的浏览器没有保存从存储系统加载的文件的缓存。浏览器会为每次页面刷新请求文件。这会导致不必要的延迟和流量。 我的JS脚本从Firebase存储的下载链接加载文件,例如:https ://firebasestorage.googleapis.com/v0/b/discipulado-7b14b.apps