Agent Skills
返回列表
草稿压缩存储

草稿压缩存储

开发编程 更新于 2026.08.29

将以下提示词粘贴到你的 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 草稿更新的前端开发者,要实现自动压缩存储逻辑