Notion engineers sped up Notion's browser speed with WASM SQLite
核心观点与细节
- 技术提升:Notion通过在浏览器中使用WASM实现的SQLite数据库,显著提升了页面导航速度,平均提速20%,在某些地区如澳大利亚、中国、印度提速更为明显。
- 关键技术:使用Origin Private File System(OPFS)和Web Workers来实现数据的跨会话持久化。Web Workers允许在浏览器主线程之外执行代码,而OPFS则提供了在用户设备上读写文件的能力。
- 架构创新:Notion采用了基于SharedWorker的架构,允许多个标签页同时执行SQLite查询,但只有一个“活跃”标签页的Web Worker实际写入SQLite数据库。
- 技术挑战:在实现过程中,Notion面临了跨源隔离、数据库文件损坏和并发问题等技术障碍。通过使用SharedWorker和OPFS SyncAccessHandle Pool VFS,成功解决了这些问题。
- 性能优化:解决了初始页面加载速度慢和慢设备未从缓存中获益的问题,通过异步加载WASM SQLite库和优化数据请求逻辑,确保了性能提升。
- 结论:Notion成功将SQLite的性能优势带入浏览器,提升了用户体验,同时保持了稳定性和数据的一致性。
结果与影响
- 性能提升:页面导航时间平均减少20%,特定地区提速更为显著。
- 技术选择:最终选择了OPFS SyncAccessHandle Pool VFS,因为它不需要跨源隔离,使得功能能够在更多浏览器上实现。
未来展望
- 持续优化:Notion团队将继续探索和优化技术,以提供更快速、更稳定的用户体验。
- 团队贡献:有兴趣参与此类工作的开发者可以查看Notion的开放职位。
通过这些改进,Notion不仅提升了产品的性能,也展示了在现代Web应用开发中,如何有效利用新技术解决实际问题。