3737
3838- ` Account Settings: Read `
3939- ` Workers Scripts: Edit `
40- - ` Workers KV Storage: Edit `
4140- ` D1: Edit `
4241
4342如果你要启用 Logo 持久化,再额外加:
4443
4544- ` Workers R2 Storage: Edit `
4645
47- 如果你以后还要绑定自定义域名 / Route,再额外加:
48-
49- - ` Workers Routes: Edit `
50-
5146建议把资源范围限制在你自己的目标 Account。
5247
5348### 4. Cloudflare Account ID
10196在你自己的 fork 仓库中:
10297
103981 . 打开 ** Actions**
104- 2 . 选择 ** Deploy to Cloudflare **
99+ 2 . 选择 ** Lite CI and Deploy **
1051003 . 点击 ** Run workflow**
106101
107102这一步不需要再填写额外参数。
124119
125120同步上游代码后,会自动触发:
126121
127- - ` Deploy to Cloudflare `
122+ - ` Lite CI and Deploy `
128123
129- 也就是说,正常情况下你后面不需要再手工重复部署。
124+ 也就是说,正常情况下你后面不需要再手工重复部署;同一个 workflow 会先跑 CI,验证通过后再执行部署 。
130125
131126只要这些不变:
132127
@@ -186,45 +181,82 @@ https://api.resend.com/emails
186181
187182---
188183
189- ## 八、Worker Lite 的性能取舍
184+ ## 八、当前分支能力边界
185+
186+ ### 支持
187+
188+ - 登录
189+ - 订阅管理
190+ - 标签
191+ - 统计
192+ - 日历
193+ - 汇率刷新
194+ - Webhook
195+ - PushPlus
196+ - Telegram
197+ - Resend 邮件
198+ - AI 文本 / 图片识别
199+ - Wallos JSON / SQLite / ZIP 导入
200+
201+ ### 不支持
202+
203+ - 本地 OCR
204+ - 原生 SMTP
205+
206+ ---
207+
208+ ## 九、Worker Lite 的性能取舍
190209
191210这个分支面向 ** Cloudflare Worker Free** ,因此实现上做了明确的 Lite 化裁剪,而不是完全复刻 Docker 版的运行模型。
192211
193- ### 1. isolate 内存短 TTL 缓存
212+ ### 1. L1 isolate 内存 + L2 D1 持久缓存
194213
195- 以下读取类接口默认会缓存 ** 30 秒** :
214+ 当前热点读取接口使用两级缓存:
215+
216+ - ** L1:当前 isolate 内存缓存**
217+ - ** L2:D1 ` ComputedCache ` 持久缓存**
218+ - ** L1 命中窗口固定较短** ,并且不会超过对应 D1 条目的剩余有效期
219+
220+ 目前接入 D1 二级缓存的接口是:
221+
222+ - ` /settings ` (5 分钟)
223+ - ` /exchange-rates/latest ` (5 分钟)
224+ - ` /statistics/overview ` (5 分钟)
225+ - ` /statistics/budgets ` (15 分钟)
226+ - ` /calendar/events ` (10 分钟)
227+
228+ 仍保留短 TTL 内存缓存的读取接口包括:
196229
197- - ` /settings `
198230- ` /tags `
199231- ` /subscriptions `
200- - ` /statistics/overview `
201- - ` /statistics/budgets `
202- - ` /exchange-rates/latest `
203- - ` /calendar/events `
204232
205233这样做的原因是:
206234
207235- Worker Free 每次 HTTP 请求只有 ** 10ms CPU**
208236- 同一页面会并发读取多份数据
209237- 如果每次都实时重算,很容易撞上 ` Worker exceeded CPU time limit `
238+ - D1 读额度相对充裕,适合承担热点聚合结果的二级缓存
210239- 同时避免继续消耗 KV Free 的每日写入额度
211240
212- 这 30 秒缓存的副作用是 :
241+ 这套缓存的副作用是 :
213242
214- - 刚修改完数据后,其他页面在极短时间内可能看到旧数据
215- - 统计页、日历页、标签页在 30 秒窗口内可能不是绝对实时
216- - 这是 isolate 级缓存,不保证跨实例强一致
243+ - 正常写操作后,统计/日历/汇率相关接口通常会立即切到新版本缓存,而不是机械地等 TTL 过期
244+ - 真正可能自然短暂变旧的主要是 ` /statistics/overview ` ,在无写操作场景下最多约 5 分钟
245+ - ` /statistics/budgets ` 与 ` /calendar/events ` 更依赖 version bump,正常情况下不应频繁看到明显旧值
246+ - L1 仍是 isolate 级缓存,不保证跨实例强一致
247+ - D1 二级缓存会跨 isolate 复用,但通过版本号失效而不是逐条删除
217248
218249当前实现已经对主要写操作做了主动失效,所以正常情况下:
219250
220- - 保存设置后,会刷新 settings / statistics / exchange-rates
221- - 修改标签后,会刷新 tags / subscriptions / statistics
222- - 修改订阅后,会刷新 subscriptions / statistics / calendar
223- - Wallos 导入提交后,会刷新 subscriptions / tags / statistics / calendar
251+ - 保存设置后,会刷新 settings / statistics / calendar / exchange-rates,并 bump ` cacheVersion.settings ` / ` cacheVersion.statistics ` / ` cacheVersion.calendar ` / ` cacheVersion.exchangeRates `
252+ - 修改标签后,会刷新 tags / subscriptions / statistics,并 bump ` cacheVersion.statistics `
253+ - 修改订阅后,会刷新 subscriptions / statistics / calendar,并 bump ` cacheVersion.statistics ` / ` cacheVersion.calendar `
254+ - Wallos 导入提交后,会刷新 subscriptions / tags / statistics / calendar,并 bump ` cacheVersion.statistics ` / ` cacheVersion.calendar `
255+ - 汇率刷新成功后,也会 bump ` cacheVersion.statistics ` / ` cacheVersion.calendar ` / ` cacheVersion.exchangeRates `
224256
225257也就是说:
226258
227- > ** 30 秒缓存带来的不是“数据一定延迟 30 秒 ”,而是“最多可能有短时间旧数据 ”。**
259+ > ** 缓存带来的不是“写完一定还要等完整 TTL ”,而是“正常写后通常会立刻切新版本;只有少数纯时间驱动统计(主要是 ` /statistics/overview ` )才可能在无写操作时最多短暂旧约 5 分钟 ”。**
228260
229261### 2. 不使用 KV
230262
@@ -233,10 +265,13 @@ https://api.resend.com/emails
233265现在这些能力的处理方式是:
234266
235267- 读取类接口:使用 isolate 内存短缓存
268+ - 热点聚合接口:额外落一层 D1 ` ComputedCache `
236269- 通知去重:回到 D1
237270- 导入预览 token:回到 D1
238271- Logo 搜索缓存:仅保留进程内短缓存
239272
273+ 另外,` ComputedCache ` 过期行会通过现有的 hourly Worker cron 顺手清理,不单独增加新的调度器。
274+
240275### 3. Wallos 导入能力
241276
242277当前 Worker 分支支持:
@@ -315,7 +350,7 @@ Worker Lite 的 Logo 搜索只保留:
315350
316351---
317352
318- ## 九 、本地手动部署(开发者可选)
353+ ## 十 、本地手动部署(开发者可选)
319354
320355如果你不是普通 fork 用户,而是本地维护这个分支的开发者,也可以直接在本机执行:
321356
@@ -336,7 +371,7 @@ npm run deploy:worker:r2
336371
337372---
338373
339- ## 十 、本地开发(开发者可选)
374+ ## 十一 、本地开发(开发者可选)
340375
341376如果你需要本地调试 Worker:
342377
@@ -354,24 +389,3 @@ http://127.0.0.1:8787
354389
355390---
356391
357- ## 十一、当前分支能力边界
358-
359- ### 支持
360-
361- - 登录
362- - 订阅管理
363- - 标签
364- - 统计
365- - 日历
366- - 汇率刷新
367- - Webhook
368- - PushPlus
369- - Telegram
370- - Resend 邮件
371- - AI 文本 / 图片识别
372- - Wallos JSON / SQLite / ZIP 导入
373-
374- ### 不支持
375-
376- - 本地 OCR
377- - 原生 SMTP
0 commit comments