Blob数据驻留在哪里?

时间:2013-07-23 20:22:31

标签: javascript html5 blob html5-filesystem

我可能最终会在长时间运行的Web应用程序中处理由Blob表示的大量数据。其中一些使用XHR(缓存友好)获得,其他使用new Blob(...)

创建
  • 现在如果我正确读完了,Blob会被磁盘或内存支持吗?
  • 这是如何决定的? (浏览器是否遵循相同的规则?)
  • 是否有办法强制或保证某些行为?

我最关心的是如何管理这些blob。我最初的想法是保持参考。但是,如果在应用程序的整个生命周期内将大量数据保存在内存中,那就太糟糕了。

1 个答案:

答案 0 :(得分:2)

到目前为止我发现的Firefox源代码:(我还没有得到任何验证!

Blob对象是nsDOMFile子类的实例。实现方面,Blob和文件之间没有什么区别。他们是nsDOMFileFilensDOMMemoryFilensDOMTemporaryFileBlobnsDOMMultipartFile

使用nsDOMMemoryFile的唯一地方是:

  • HTMLCanvasElement#toBlob
  • 在相机API中。
  • 在Media Recorder API中。
  • binaryType'blob'时的WebSockets。
  • binaryType'blob'
  • 时,在WebRTC数据渠道中

所有其他地方都使用nsDOMFileFilensDOMTemporaryFileBlob,因此由磁盘存储支持,但new Blob构造函数除外。

使用new Blob构造函数创建的Blob是nsDOMMultipartFile的实例。这个类实际上包含了一组blob(上面描述的其他三种),并将它们表示为一个。

传递字符串或ArrayBuffer时,会将它们复制到新的nsDOMMemoryFile中,然后附加到集合中。传递任何类型的现有Blob时,它会按原样附加到集合中。因此,nsDOMMultipartFile实际上可能具有混合磁盘和内存存储支持。