From fa172d8974ae768bf86331e7a07e464db310179f Mon Sep 17 00:00:00 2001 From: "jif2.zhang" Date: Tue, 3 Nov 2026 15:33:40 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=AE=8F=E8=A7=82):=20ifinance=20?= =?UTF-8?q?=E7=89=88=E6=9C=AC=E5=B1=95=E7=A4=BA=E3=80=81=E6=89=8B=E5=8A=A8?= =?UTF-8?q?/=E6=AF=8F=E6=97=A5=E6=9B=B4=E6=96=B0=E4=B8=8E=E6=8C=89?= =?UTF-8?q?=E9=9C=80=E6=96=87=E4=BB=B6=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 「我」页展示 ifinance 版本/构建时间/构建号/上次检查, 点击手动更新 info.json - 启动及每 30 分钟检查, 超过 24h 自动刷新索引 - 新增 Service Worker: 按 files[].hash 内容寻址, 只缓存打开过的页面 - 未命中时按需下载单个文件并校验 sha256, 索引升级后清理旧缓存 - 缓存页面通过 CSP sandbox 隔离, 支持看板行内脚本且无法访问宿主数据 --- public/ifinance-sw.js | 147 +++++++++++++++++ src/lib/ifinance.js | 241 ++++++++++++++++++++++++---- src/main.jsx | 4 + src/pages/MePage.jsx | 72 +++++++++ src/pages/macro/FinanceItemView.jsx | 37 ++++- 5 files changed, 466 insertions(+), 35 deletions(-) create mode 100644 public/ifinance-sw.js diff --git a/public/ifinance-sw.js b/public/ifinance-sw.js new file mode 100644 index 0000000..39deffb --- /dev/null +++ b/public/ifinance-sw.js @@ -0,0 +1,147 @@ +// ifinance 文件缓存 Service Worker +// ------------------------------------------------------------ +// 宿主把 iframe 指向 /__ifinance__/?h=&t=, 由本 SW: +// 1. 按 hash 从 Cache Storage 取本地缓存 (内容寻址, 索引更新后自然失效) +// 2. 未命中时只拉当前这一个文件 (按需加载, 不预下载整个模块包) +// 3. 用 sha256 校验后再写入缓存; 校验失败仍然返回内容, 但不落盘 +// +// 为什么不用 blob: URL 直接渲染: blob: 文档会继承宿主页面的 CSP +// (script-src 'self'), 内嵌看板的