gpt4 book ai didi

google-chrome - xhr blob responseType 的内存使用情况(Chrome)

转载 作者:行者123 更新时间:2023-12-02 03:46:18 48 4
gpt4 key购买 nike

使用 Google Chrome,假设我使用 ajax 将文件下载为 blob,如下所示:

var xhr = new XMLHttpRequest();
xhr.open('GET', 'some/path', true);
xhr.responseType = 'blob';

xhr.onload = function(e) {
//Save xhr.response using FileSystem API
};

xhr.send();

我是否需要担心这里的内存使用(假设下载的文件可能非常大,或者我可能会以这种方式下载很多文件)?

我的理解是,由于我指定的响应类型为“blob”而不是“arraybuffer”,因此下载的数据不会加载到 Javascript 可用的内存中。但是,下载的数据必须存储在某个地方。它只是存储在内存中,还是浏览器会在必要时将其放入某种内存不足的缓存中?如果它保存在内存中,我是否有任何方法可以在我处理完它后处理它(即,在我的示例中,一旦我使用 FileSystem API 保存它)。

最佳答案

对于二进制或 blob 数据,Chrome 使用一个复杂的系统,该系统由选项卡的内存缓冲区和异步全局存储逻辑组成,该逻辑还将数据交换到磁盘。选项卡内存、全局存储容量以及重要的是数据在两者之间传输和换出的速度都有限制。

这与保存代码和常规变量的可用 JavaScript 内存不同。

无法确切知道这些限制是什么,但创建 blob 的速度起着至关重要的作用。将此类操作减慢到比方说慢速磁盘的速度,可以大大增加应用程序可用的内存。

关于 Chrome 的 Blob 存储的解释可以在这里找到: https://chromium.googlesource.com/chromium/src/+/master/storage/browser/blob/README.md

回答您的问题:是的,您需要担心那里的内存。如果您在 XHR 请求中一次性加载的数据大于可用选项卡内存,选项卡将崩溃。同样,如果您随着时间的推移超过全局存储限额或加载许多较小的文件速度过快,您也会遇到问题。

关于google-chrome - xhr blob responseType 的内存使用情况(Chrome),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16846382/

48 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com