


























最近都在和浏览器存储打交道,不可避免的知道了一个新的存储方式IndexDB。
IndexedDB 是浏览器内置的一个非关系型数据库,和 localStorage 不同,它可以存储大量结构化数据(包括文件和二进制数据),并且支持索引查询和事务操作。单个域名的存储上限通常在几百 MB 到几 GB,远比 localStorage 的 5MB 大得多。
常见浏览器存储方案对比:
| 方案 | 容量 | 类型 | 适用场景 |
|---|---|---|---|
| localStorage | ~5MB | 字符串 | 小量配置、token |
| sessionStorage | ~5MB | 字符串 | 会话级临时数据 |
| Cookie | 4KB | 字符串 | 身份标识 |
| Cache API | 较大 | Request/Response | 离线缓存 |
| IndexedDB | 数百MB~GB | 任意结构化数据 | 大量数据、文件存储 |
下载大文件(比如几百 MB 的视频、压缩包)时,传统方式会遇到几个问题:
IndexedDB 恰好能解决这些问题:
核心思路很简单:分块下载 + 逐块写入 IndexedDB + 最后合并导出。
整个流程分为四步:
IndexedDB 处理大文件下载的核心优势就是不占内存 + 持久化 + 支持断点续传。相比传统方式,它让大文件下载在浏览器端变得可控且稳定。
完整流程总结:HEAD 请求获取大小 → Range 分块下载 → 逐块写入 IndexedDB → 合并 Blob 导出。这个思路同样适用于大文件上传,只不过是将”下载”换成”读取文件分片 + 上传分片”。
但是缺点也很明显,就是需要等待所有块下载完成后,才能合并导出文件。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。