我可能最终会在长时间运行的Web应用程序中处理由Blob表示的大量数据。其中一些使用XHR(缓存友好)获得,其他使用new Blob(...)
。
我最关心的是如何管理这些blob。我最初的想法是保持参考。但是,如果在应用程序的整个生命周期内将大量数据保存在内存中,那就太糟糕了。
答案 0 :(得分:2)
到目前为止我发现的Firefox源代码:(我还没有得到任何验证!)
Blob对象是nsDOMFile
子类的实例。实现方面,Blob和文件之间没有什么区别。他们是nsDOMFileFile
,nsDOMMemoryFile
,nsDOMTemporaryFileBlob
或nsDOMMultipartFile
。
使用nsDOMMemoryFile
的唯一地方是:
HTMLCanvasElement#toBlob
。binaryType
为'blob'
时的WebSockets。binaryType
为'blob'
。所有其他地方都使用nsDOMFileFile
或nsDOMTemporaryFileBlob
,因此由磁盘存储支持,但new Blob
构造函数除外。
使用new Blob
构造函数创建的Blob是nsDOMMultipartFile
的实例。这个类实际上包含了一组blob(上面描述的其他三种),并将它们表示为一个。
传递字符串或ArrayBuffer时,会将它们复制到新的nsDOMMemoryFile
中,然后附加到集合中。传递任何类型的现有Blob时,它会按原样附加到集合中。因此,nsDOMMultipartFile
实际上可能具有混合磁盘和内存存储支持。