Azure Blob开发:能否缓存BlobContainerClient对象?
关于Azure Blob容器客户端的缓存问题
我经常用以下代码构建Blob的完整URL:
var (containerName, blobName) = SplitFullname(filename); var container = ServiceClient.GetBlobContainerClient(containerName); var blobClient = container.GetBlobClient(blobName); return blobClient.Uri.AbsoluteUri;
其中ServiceClient是在应用启动时创建并保存为单例服务的。我的应用会用到6个容器,请问我应该缓存这6个BlobContainerClient对象,还是每次使用时都重新创建?
当然可以缓存这6个BlobContainerClient对象,而且非常推荐这么做,原因如下:
BlobContainerClient本身是线程安全的,单例复用完全不会有并发问题- 每次调用
GetBlobContainerClient的开销虽小,但重复创建会产生不必要的对象实例和初始化成本,缓存能直接减少这部分消耗 - 你的应用仅用到6个容器,数量固定且极少,缓存的内存占用可以忽略,不会带来任何内存压力
相比每次创建的方式,缓存的优势很明确:既不会增加代码复杂度,又能小幅提升性能。你可以在应用启动时,基于单例的ServiceClient提前创建好这6个容器客户端并保存,或者在第一次使用时创建后存入字典类缓存中,后续直接复用即可。
内容的提问来源于stack exchange,提问作者David Thielen
相关产品推荐
相关产品推荐

