这是我参与更文挑战的第 21 天,活动详情查看:更文挑战
Storage Foundation API 类似于基本文件系统,可通过缓冲区和偏移直接访问存储的数据。它提供通用、简单的 API,为开发人员提供了灵活性。这使构建更高级的组件成为可能。
网络平台越来越多地为开发人员提供构建高性能应用程序所需的工具。最值得注意的是
- Wasm 为快速强大的 Web 应用打开了大门,
- Emscripten 这样的技术现在允许开发人员在 Web 上重复使用久经考验的代码。要真正利用这种潜力,开发人员在存储方面必须具有同样的力量和灵活性。
这就是 Storage Foundation API 的用武之地。Storage Foundation API 是一种新的快速和未开放的存储 API,可以解锁新的和大量请求的 Web 使用案例,例如实现执行数据库和优雅地管理大型临时文件。有了这个新的界面,开发人员可以“自带存储”到 Web,从而缩小 Web 和平台特定代码之间的功能差距。
Storage Foundation API 的设计类似于一个非常基本的文件系统,因此它通过提供通用、简单和可执行的原始元件来为开发人员提供灵活性,从而可以构建更高级的组件。应用程序可以利用最佳工具满足其需求,在可用性、性能和可靠性之间找到正确的平衡点。
我们为什么需要另外一个存储 API ?
在这之前,我们一起看下现有的客户端存储技术:
cookie / sessionStorage / localStorage
只允许存储非常少量的数据。即使是其中较大的 localStorage,浏览器也只提供 5M 左右的空间
File and Directory Entries API / WebSQL
因为各种原因被弃用
File System Access API
关注点不同。提供客户端的文件系统接口,并提供对可能不同源甚至浏览器之外的数据访问权限。这种不同的关注点伴随着更严格的安全考量和更高的性能成本
indexedDB API
可用作 Storage Foundation API 某些使用案例的后端。举个例子,Emscripten 有 IDBFS,这是一个基于 indexedDB 的持久文件系统。但由于 indexedDB 从根本上是一个 key-value 数据库,因此具有显著的性能限制。
此外,在 indexedDB 下,直接访问文件的字节很困难,性能也很差。
CacheStorage interface
CacheStorage interface 被浏览器广泛支持,并用来存储 Web 应用资源等大型数据,但未提供操作存储内容的接口
Storage Foundation API 旨在通过允许执行者存储在应用程序原件中定义的可变大文件来缩小以前存储选项的所有空白。
存储基础 API 的建议使用案例
可能使用此 API 的站点示例包括:
在大量视频、音频或图像数据上运行的生产力或创意应用。此类应用可以将段卸载到磁盘中,而不是将其保留在内存中。 依赖于从 wasm 访问的持久文件系统的应用程序,其性能比 IDBFS 所能保证的要高。