Dav*_*542 12 javascript memory google-chrome v8
我只是在编一个场景,但假设我有一个 500MB 的文件,我想为客户端提供一个 html 表来查看数据。假设有两种情况:
忽略分页或虚拟表之类的东西,我只关心“完整数据集是否可以放入用户的可用内存中”。这是否可以在浏览器中检测到(即使经过用户的确认)。如果是这样,怎么能做到这一点?
这个答案大约在 6 年前就有答案,问题指向 10 年前的答案。我想知道当前的状态是什么,因为从那时起浏览器发生了很大的变化,还有 webassembly 等。
使用performance.memory.usedJSHeapSize. 虽然它是非标准的并且正在开发中,但它足以测试所使用的内存。您可以在 edge/chrome/opera 上试用它,但遗憾的是不能在 firefox 或 safari 上(截至撰写本文时)。
属性( performance.memory)
jsHeapSizeLimit:上下文可用的堆的最大大小(以字节为单位)。
totalJSHeapSize:总分配的堆大小,以字节为单位。
usedJSHeapSize: JS 堆的当前活动段,以字节为单位。
阅读更多关于performance.memory:https : //developer.mozilla.org/en-US/docs/Web/API/Performance/memory。
CanIUse.com:https://caniuse.com/mdn-api_performance_memory
有点。
\n截至撰写本文时,设备内存规范正在开发中。它指定navigator.deviceMemory包含总设备内存(以 GiB 为单位)的粗略数量级估计的属性;此 API 仅适用于通过 HTTPS 提供服务的站点。这两个限制都是为了减少对客户(尤其是第三方)进行指纹识别的可能性。(该规范还定义了 \xe2\x80\x98clienthint\xe2\x80\x99 HTTP 标头,它允许直接在服务器端检查可用内存。)
然而,W3C 工作草案的日期为 2018 年 9 月,而Editor\xe2\x80\x99s 草案的日期为 2020 年 11 月,但该时间跨度内的更改仅限于内务处理和编辑修复。因此,这方面的发展充其量也显得不冷不热。此外,它目前仅在 Chromium 衍生物中实现。
\n请记住:仅仅因为客户端确实拥有一定量的内存,并不意味着您可以使用它。也许他们想将其用于其他目的。知道存在大量内存并不意味着允许使用所有内存而排除其他人。此 API 的最佳用途可能类似于问题中指定的用途:检测我们要发送的数据是否太大而导致客户端无法处理。
\n| 归档时间: |
|
| 查看次数: |
683 次 |
| 最近记录: |