- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想从 Azure Blob 存储下载一个可能尚不存在的文件。我正在寻找最可靠、最高效的方法来处理这个问题。为此,我发现了两个都有效的选项:
选项 1:使用 ExistsAsync()
持续时间:大约需要 1000~1100 毫秒才能完成。
if (await blockBlob.ExistsAsync())
{
await blockBlob.DownloadToStreamAsync(ms);
return ms;
}
else
{
throw new FileNotFoundException();
}
选项 2:捕获异常
持续时间:每次至少需要+1600ms。
try
{
await blockBlob.DownloadToStreamAsync(ms);
return ms;
}
catch (StorageException e)
{
// note: there is no 'StorageErrorCodeStrings.BlobNotFound'
if (e.RequestInformation.ErrorCode == "BlobNotFound")
throw new FileNotFoundException();
throw;
}
这些指标是通过 webapi 上的简单 API 调用来完成的,该调用使用上述函数并返回适当的消息。我在这里通过 Postman 手动测试了端到端场景。当然,这种方法有一些开销。但总的来说,ExistsAsync() 操作似乎节省了至少 500 毫秒。至少在我的本地机器上,同时进行调试。这有点值得注意,因为 ExistsAsync() 上的 DoesServiceRequest
属性似乎表明这是另一个需要进行的昂贵的 http 调用。
此外,ExistsAsync API docs不要谈论它的用法或任何副作用。
基于穷人的测试,一个直率的结论将导致我选择No。 1、因为:
但这是我的实际问题:这是对 ExistsAsync() 用法的正确解释吗?
例如。它存在的“原因”是不是比简单地捕获未找到的异常更有效,特别是出于性能原因?
谢谢!
最佳答案
But here is my actual question: is this the correct interpration of the usage of ExistsAsync()?
您可以轻松查看the implementation你自己。
ExistsAsync()
只是一个 http 调用的包装器,如果 blob 不存在,则返回 http 未找到状态并返回 false
在这种情况下。 True
否则。
我会说选择 ExistsAsync,因为它似乎是最理想的方法,特别是如果您认为有时 blob 不存在的话。 DownloadToStreamAsync
有more work to do将异常包装在 StorageException
中也许还可以做一些更多的清理工作。
I would assume the ExistsAsync() operation is there for this exact reason
考虑一下:有时您只想知道给定的 blob 是否存在,而不对其内容感兴趣。例如,警告上传时某些内容将被覆盖。在这种情况下使用 ExistsAsync
是一个很好的用例,因为使用 DownloadToStreamAsync
仅检查存在性将是昂贵的,因为如果 blob 存在,它将下载内容。
关于c# - 就性能而言,使用 CloudBlob.ExistsAsync 与 catch StorageException.BlobNotFound 比较?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48869187/
我的任务是使用 Azure Blob 存储从应用程序下载简单的 .txt 文件。该代码应该可以工作。我没有写它,但它对我来说看起来不错,从我稍后将在这篇文章中展示的内容来看,它确实连接到了 Azure
我想从 Azure Blob 存储下载一个可能尚不存在的文件。我正在寻找最可靠、最高效的方法来处理这个问题。为此,我发现了两个都有效的选项: 选项 1:使用 ExistsAsync() 持续时间:大约
亲爱的开发者您好, 我面临的问题是无法读取/访问我的 Azure 存储帐户上的 blob 文件。我使用 C# 作为编程语言。最后,我想读取我的 blob 文件来搜索特定值并检查其是否为真。预先感谢您<
亲爱的开发者您好, 我面临的问题是无法读取/访问我的 Azure 存储帐户上的 blob 文件。我使用 C# 作为编程语言。最后,我想读取我的 blob 文件来搜索特定值并检查其是否为真。预先感谢您<
我是一名优秀的程序员,十分优秀!