webstorage可高效缓存erp表格列配置:localstorage用于持久化用户级界面状态(如可见性、顺序、宽度),需按租户/用户/模块隔离key;sessionstorage适用于临时会话态配置;推荐使用webstoragecache增强时效性与健壮性。

在大中型ERP系统中,用户常需自定义表格列(如显示/隐藏、拖拽排序、宽度调整、冻结列等),这类配置若每次请求都从后端拉取或写回,会显著增加服务器压力与网络延迟。WebStorage(localStorage 和 sessionStorage)可作为轻量、低延迟的客户端缓存层,精准承接这类“用户级界面状态”,实现配置就近存储、即时生效、跨页面复用。
明确存储边界:什么该存,什么不该存
WebStorage适合保存**纯前端展示逻辑相关的列配置元数据**,而非业务数据本身:
-
应存:列可见性(
["id", "name", "status"])、列顺序([2, 0, 1])、列宽数组({"name": "200px", "amount": "120px"})、冻结列数量(1)、是否启用斑马纹(true) -
不存:实际表格数据、权限字段标识(如
canEdit)、服务端强校验规则、敏感操作日志 - 关键原则:配置必须是**同源、同用户、同模块**维度隔离的。例如,采购单列表和销售单列表的列配置应使用不同 key,如
"erp-table-col-config-purchase"与"erp-table-col-config-sales"
用 localStorage 实现持久化列配置
用户关闭浏览器再打开,仍希望保持上次设置——这是典型 localStorage 场景。建议采用结构化 key 命名 + JSON 序列化:
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
- 生成唯一键名:
const key = `erp-table-col-config-${tenantId}-${userId}-${moduleId}`(含租户、用户、模块三重标识) - 保存配置:
localStorage.setItem(key, JSON.stringify(configObj)) - 读取并恢复:
const saved = localStorage.getItem(key); const config = saved ? JSON.parse(saved) : defaultConfig; - 注意:避免直接用
JSON.stringify存储含函数或 Date 对象的配置;列宽等数值建议统一存为字符串(如"150px")或数字,避免解析歧义
用 sessionStorage 管理临时会话态配置
某些场景需“本次会话专属”配置,例如:调试模式下临时开启隐藏列、多标签页并行处理不同单据时互不干扰:
- 使用
sessionStorage可天然绑定当前窗口生命周期,关闭标签页即自动清理 - 示例:
sessionStorage.setItem("erp-temp-col-filter", JSON.stringify({showDebugCols: true})) - 特别适合表单内嵌表格、弹窗表格等短生命周期组件,避免污染全局 localStorage
增强健壮性:引入 WebStorageCache 库
原生 WebStorage 缺乏超时与自动清理能力,而 ERP 系统配置可能随版本迭代失效。推荐集成 WebStorageCache:
- 安装:
npm install webstorage-cache - 设置带 7 天有效期的列配置:
cache.set("erp-col-config-v2", config, { timeout: 7 * 24 * 3600 }) - 获取时自动校验过期:
const config = cache.get("erp-col-config-v2") || defaultConfig - 优势:避免旧配置长期残留导致 UI 异常;支持一键清除某类配置(
cache.deleteByPrefix("erp-col-config-"));内置序列化,无需手动JSON.stringify
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










