Skip to content

缓存与数据刷新

了解系统各模块的缓存策略和数据刷新机制。

缓存概览

系统采用多层缓存机制,在保证数据实时性的同时提升页面加载速度。

缓存层级说明
内存缓存应用运行期间的快速缓存,关闭应用后失效
本地存储缓存持久化到设备存储,支持 TTL 过期机制
HTTP 请求缓存GET 请求响应缓存,减少重复网络请求
CDN 缓存静态资源通过 Cloudflare CDN 分发

工作台缓存策略

工作台首页是缓存策略最复杂的页面:

数据类型缓存时间刷新策略
主数据(待办、流程列表)5 分钟onShow 时判断是否超过 5 分钟,超过则刷新
常用流程30 秒独立缓存,确保从发起申请页返回时及时刷新
下拉刷新强制刷新所有数据,不受缓存限制

刷新触发时机

  • 页面 onShow:每次页面显示时检查缓存是否过期
  • 下拉刷新:用户手动下拉,强制刷新所有数据
  • 应用从后台恢复:监听 app-resume-refresh 事件,仅在首页时刷新
  • 常用流程更新:监听 common-func-updated 事件,立即刷新
  • 防抖机制:10 秒内不重复触发刷新

流程定义缓存

配置
缓存时间5 分钟
缓存优先未过期直接返回缓存数据
过期策略自动刷新
强制刷新调用 forceLoad() 忽略缓存
并发控制防止同时发起多个请求

表单草稿缓存

填写审批表单时,系统会自动保存草稿:

配置
过期时间24 小时
保存方式500ms 防抖自动保存
存储范围每个流程独立缓存
自动过滤空值和系统字段(如 applyUserId)

小贴士

  • 表单草稿会在下次打开同一流程时自动恢复
  • 草稿超过 24 小时会自动清除
  • 提交成功后草稿会自动清除

HTTP 请求缓存

GET 请求的响应会自动缓存:

配置
缓存上限100 条(LRU 淘汰)
缓存键GET:{url}:{data}
过期控制通过 cacheTime 参数指定
适用范围仅 GET 请求

基础数据缓存

通讯录、字典等基础数据采用内存 + 本地存储双层缓存:

数据类型缓存时间
用户列表/树1 小时
部门列表/树1 小时
角色列表/树1 小时
岗位列表/树1 小时
区域字典树1 小时

安全存储

本地存储的数据经过加密处理:

  • 加密方式:XOR 加密 + Base64 编码
  • 密钥OA_WORKSPACE_2024_SECURE_KEY
  • 存储选项{ encrypt?: boolean, expire?: number }
  • TTL 机制expire 为毫秒数,0 表示永不过期,读取时自动检查过期并删除

静态资源缓存(CDN)

部署到 Cloudflare Pages 后,静态资源的缓存策略:

资源类型缓存策略
index.html禁止缓存(no-cache, no-store
带 hash 的 JS/CSS30 天缓存 + immutable
图片/字体30 天缓存 + immutable
version.json禁止缓存(供版本检测)

数据不更新怎么办?

如果页面数据看起来不是最新的:

  1. 下拉刷新:在工作台首页下拉强制刷新
  2. 清除缓存:设置 → 清除缓存
  3. 重启应用:完全关闭应用后重新打开
  4. 检查网络:确保网络连接正常

小贴士

系统设计了合理的缓存策略,正常情况下数据会在缓存过期后自动刷新。只有在缓存异常或网络问题时才需要手动清除缓存。

OA 办公系统文档中心