JavaScript内存使用情况

3
我有一个可以上传图片的网站。 在上传之前,我会在客户端进行裁剪,然后在服务器端进行优化...
在移动设备上,如果没有免费RAM,则失败。
我如何从JavaScript中获取RAM内存使用情况,以便在没有内存时跳过CROP?
我只需要JavaScript解决方案!
请注意,我没有内存泄漏!
如果我打开许多应用程序,并且没有太多的RAM可用,我的策略就不起作用了。
我需要JavaScript代码来获取可用RAM,如果低于某个数量,我将跳过CROP。
-------------- OK定义故障:--------------
从移动设备拍照并上传...
我在JavaScript中执行CROP
1.大约2MB的图像变成300KB
2.我仅上传300KB,然后从服务器端300KB--> 30KB,我保存
如果没有RAM,这将失败。
我不想说“再试一次”
我想跳过CROP
非常感谢您的评论。
我处理错误,但我希望避免客户端等待40-60秒然后收到消息。
如果我不进行CROP,是否可以?但每张图像节省近1.7MB的带宽...贪婪:-)
window.performance很好,我会使用它,谢谢。
我将研究从服务器端进行往返,我能做些什么,我能为移动设备找到它吗?

“fail”到底是什么意思?你有没有收到错误信息?尝试使用try...catch语句了吗? - Oriol
看起来Webkit有window.performance.memory,它将显示总堆大小和已使用的堆大小,但这对非Webkit设备无济于事。也许更安全的方法是给用户一个裁剪选项,并警告可能会影响性能。 - CᴴᵁᴮᴮʸNᴵᴺᴶᴬ
“如果没有RAM,这将失败”更具体地说,哪一部分会失败?它何时失败? - Kevin B
1个回答

2

开发中

使用Chrome的DevTools进行全面的诊断。您可以获得JavaScript运行时诊断、请求信息以及基本上任何您可能需要的东西。

客户端测试

就在您的代码中测试有多少可用RAM,没有真正的“正确”或“推荐”策略(来源)。显然,最好的解决方案是优化您的代码; 根据客户端运行的其他应用程序数量变化您网站的显示/交互可能会让用户感到困惑(例如:他们期望显示某个工具,但从未出现;他们认为页面未正确加载,于是离开等)。

以下是来自上述来源的一些亮点:

  • "计算DOM元素或文档大小可能是一个很好的估计,但它可能非常不准确,因为它不包括事件绑定、data()、插件和其他内存数据结构。"

  • 您需要监视DOM 您的代码使用的内存才能获得准确的结果。

  • 您可以尝试使用window.performance(来源),但这在不同的浏览器中并不得到很好的支持。

注意:正如Danny在下面的评论中提到的那样,当一个功能被禁用时显示一条咨询性消息可能会消除一些困惑,但是为什么要在一个如此可选的功能上使用资源呢?就是我的两分钱... :)


1
提问者可以使用DevTools在自己的电脑上进行诊断,但不能检查客户端计算机是否有足够的RAM。 - Oriol
正在写代码,抱歉。请查看更新后的答案。 - Casey Falk
我认为只有在客户端有足够的资源来完成此步骤而不会崩溃设备时,才运行特定工具是一个好主意。如果用户期望“工具”出现,但它从未出现,这可能会令人困惑和恼怒。 - Casey Falk
尽管如此,您的观点确实是有道理的!我已将其包含在答案中。 - Casey Falk
非常感谢您的评论。 - Valentin Petkov
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接