ArkWeb 手记 07|缓存和离线页怎么做

HarmonyOS 7 · ArkWeb 混合应用开发手记 07

Web 页面在办公室 Wi‑Fi下秒开,不代表上线后也秒开。地铁、地下车库、网络切换时,用户看到的往往是白屏和转圈。

这一篇做缓存和离线,但不追求"什么都缓存"。

1. 先分三类东西

text 复制代码
壳资源:HTML/CSS/JS
业务数据:接口 JSON
用户敏感数据:账号、订单等

三类资源不能用同一套缓存策略。

【配图 01:网络正常/弱网/离线三种 ArkWeb 加载路径】

2. 静态资源最适合先优化

版本化 JS/CSS 可以使用 HTTP 缓存、CDN 和稳定资源指纹。不要让 App自己重新发明一套浏览器缓存。

3. 离线页要小

断网兜底页只需要说明状态、提供重试和返回。不要做一个本身又依赖十几个在线资源的"离线页"。

4. 本地 rawfile 适合兜底壳

必要的错误页、协议模板或固定资源可以跟 App一起发布。加载本地页面时仍然要注意资源路径和访问边界。

5. 缓存不是越多越快

错误缓存、过期接口和旧 JS都可能造成"只有部分用户坏掉"的问题。任何缓存都应该回答两个问题:什么时候失效?怎么主动清?

6. 版本号要能看见

ts 复制代码
const WEB_BUNDLE_VERSION = '2026.09.01'

日志里打印当前 Web 资源版本,线上定位会省很多时间。

7. 离线数据谨慎保存

商品列表可以考虑短期缓存,支付结果、账号权限等不能简单拿旧数据当真。

8. 网络恢复以后不要全量狂刷

恢复网络时,只重新请求当前页面真正需要的数据。多个组件同时监听网络恢复,很容易造成瞬时请求洪峰。

9. 预编译缓存是性能工具,不是业务缓存

官方性能规则提到可通过 JavaScript预编译生成字节码缓存来降低页面加载时间。它解决的是执行性能,不等于你的业务数据缓存。两者别混。

10. 小结

缓存策略的目标是"可预测地快",不是"尽可能多地存"。下一篇继续做性能,把预连接、预取、首屏和测量真正串起来。

相关推荐
贾伟康10 小时前
HarmonyOS API 26 Navigation 跨包路由:router_map、HSP 按需加载与失败回落
harmonyos·arkts·模块化·navigation·hsp
KevinChaos10 小时前
阳台小花园开发手记 04|HarmonyOS 7.0 互动卡片:倾斜手机时的卡片效果
华为·harmonyos
2501_9339232512 小时前
解读Redis:单线程模型
数据库·redis·缓存
威哥爱编程14 小时前
模拟面试智能体开发实战 04:面试聊到哪算哪?用状态机把整场面试编排起来
python·agent·harmonyos
威哥爱编程14 小时前
模拟面试智能体开发实战 03:AI 面试官太客气?人设 Prompt 让它像个真考官
python·agent·harmonyos
时间的拾荒人16 小时前
Redis 集合类型详解:Set 与 Zset
redis·缓存·面试
贾伟康19 小时前
HarmonyOS API 26 Navigation 导航栏位置:navBarPosition、左右布局与折叠屏适配
harmonyos·arkts·arkui·navigation·折叠屏
贾伟康1 天前
HarmonyOS API 26 DevEco Code 需求到 ArkTS 骨架的提示词分层
harmonyos·arkts·ai coding·deveco code·工程提效
威哥爱编程1 天前
模拟面试智能体开发实战 02:回答等半分钟,谁还愿意练?把服务端和流式输出搭起来
python·agent·harmonyos
威哥爱编程1 天前
模拟面试智能体开发实战 01:面试挂了都不知道挂在哪?用 Python 给自己造一个随叫随到的 AI 面试官
python·agent·harmonyos