【发布时间】:2021-02-20 12:45:10
【问题描述】:
考虑以下代码:
var container = new BlobContainerClient(...);
// fileStream is a stream delivering 10 MB of data
await container.UploadBlobAsync("name-of-blob", fileStream);
使用 Fiddler Proxy 观察 HTTP 请求,我可以看到这以 4 个 HTTP PUT 请求结束(地址是 127.0.0.1,因为我正在使用 Azurite 模拟器进行本地测试):
前两个请求(603 和 607)大小为 4 MB,第三个请求(613)大小为 2 MB,第四个请求(614)最终提交所有发送的块。
-
与其对数据发出 3 个请求(4 MB + 4 MB + 2 MB),是否有可能在一个请求中流式传输 10 MB 的数据以节省一些开销?
-
由于数据以 4 MB 块发送,这是否意味着 Azure 存储客户端等到它从
fileStream获得 4 MB 才开始发送,这意味着 4 MB 的 RAM 用于缓存?我使用fileStream的意图是通过直接将fileStream 传递到Azure Blob Storage 来减少内存使用量。
我使用的是Azure.Storage.Blobs 12.8.0 版(我写这篇文章时的最新稳定版本)。
【问题讨论】:
标签: c# azure http stream azure-blob-storage