草稿压缩存储
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_f1b049da/prq20263590 这个技能到 AI 助手。
技能介绍
要解决的具体问题
- 客户端草稿对象体积大时,直接存入
localStorage易触发配额超限(QuotaExceeded),导致草稿保存失败。 - 长文本跟进笔记、大型草稿 JSON 会占用更多本地存储空间,增加读写耗时与清理成本。
- 仅需本地轻量存储时,引入
IndexedDB会增加复杂度,难以快速落地。
技能如何工作
核心能力基于 lz-string 对客户端草稿 JSON 进行压缩存储,推荐使用 compressToUTF16 与 decompressFromUTF16 组合,适配 localStorage 的存储场景。
关键步骤
- 读写封装:将草稿读写逻辑成对封装,先通过
JSON.stringify序列化草稿对象,再用compressToUTF16压缩为字符串,存入localStorage;读取时先解压,再通过JSON.parse还原对象。 - 版本管理:存储 Key 需带版本前缀(如
crm:draft:v1:),便于后续字段调整或逻辑迭代时平滑迁移数据。 - 异常处理:解压失败时返回中文错误原因,支持手动清空损坏的草稿数据,避免异常中断后续操作。
- 衔接草稿更新:可与
Immer的草稿更新逻辑结合,在produce完成草稿变更后,自动调用saveDraftCompressed压缩存储。
自测要点
- 验证大文本草稿的存取往返一致性,确保压缩后数据无丢失。
- 对比压缩前后字符串长度,直观验证存储空间节省效果。
适用边界与注意点
- 非加密用途:压缩仅用于节省存储空间,不等同于加密,敏感数据需额外加密方案,不可直接依赖该方式存储。
- 轻量场景优先:适用于仅需本地草稿、无需复杂查询或跨设备同步的场景,若需多端同步或高频读写,建议改用
IndexedDB或后端存储。 - 依赖管理:需提前引入
lz-string依赖,确保压缩与解压方法的一致性,避免因版本差异导致数据无法还原。
使用场景
- 跟进笔记过长导致草稿保存失败,需要把大对象压缩后存 localStorage
- localStorage 接近配额频繁报错,需用 lz-string 节省草稿存储空间
- 只需本地轻量草稿保存,不需要引入 IndexedDB 的简单方案
- 用 Immer 更新草稿后,需要自动压缩存储到本地的完整流程
适合人员
- 负责客户端草稿存储的前端开发,需解决 localStorage 配额超限问题
- 处理长文本笔记的产品开发者,要降低大草稿的存储占用
- 需要本地轻量保存数据的 Web 工程师,不想引入复杂存储方案
- 对接 Immer 草稿更新的前端开发者,要实现自动压缩存储逻辑