# 免费长期托管方案决策

更新时间：2026-08-03（Asia/Shanghai）

## 结论

不迁移后台量化引擎。继续使用以下分层方案：

- 正式访问入口：`https://seekingquant.netlify.app/`
- 常驻行情、模拟账户、订单镜像与账本：Cloudflare Workers + SQLite-backed Durable Objects
- `chatgpt.site`：仅保留为同步副本，不作为推荐入口

这套组合目前仍可以在免费额度内长期低流量运行，但任何第三方免费计划都不能提供“永久不改政策、绝不暂停、100% 可用”的合同保证。

## 为什么不换 Render 或 Vercel

- Render 免费 Web Service 在连续 15 分钟没有入站 HTTP 或 WebSocket 消息后会休眠，重新唤醒约需一分钟，且免费实例可能随时重启；不适合作为无人访问时仍持续执行的交易引擎。
- Vercel Hobby 的定时任务最低只能每天一次，且调度可能落在指定小时内的任意时间，无法承担秒级或分钟级常驻策略循环。
- Netlify Free 适合作为门户入口，但免费计划每月只有 300 credits；达到上限后项目会暂停到下个计费周期，因此不把后台交易计算搬到 Netlify Functions。
- Oracle Cloud Always Free Compute 没有固定到期时间，可以作为完全迁离 Cloudflare 时的备选；但需要自行维护虚拟机、系统更新、进程守护、数据库备份、网络安全和故障恢复，运维复杂度明显更高。

## Cloudflare 免费额度与本次优化

Cloudflare 官方当前允许 Workers Free 使用 SQLite-backed Durable Objects。官方免费额度包括每天 100,000 次 Durable Object 请求，alarm invocation、HTTP/RPC 与 WebSocket 消息都会计入；SQLite 每天还包含 100,000 行写入与 5,000,000 行读取。

旧循环无论开市休市都每秒唤醒，容易无意义地消耗免费额度。本次改为：

- 美股常规交易时段：每 2 秒运行一次，与实际行情轮询频率一致；
- 休市时段：每 60 秒运行一次，只维持状态与等待开市；
- 策略信号仍使用 1 分钟 K 线，因此不会改变 60/180 或 12/36 的交易逻辑；
- 浏览器关闭后 Durable Object Alarm 继续运行；浏览器重新打开时读取最新账本；
- WebSocket 已连接时停止 HTTP 备用轮询，减少 Netlify 与 Worker 请求量。

按单个主模拟 Durable Object 粗算，交易日约产生 11,700 次开市 alarm，加上约 1,050 次休市 alarm，明显低于每天 100,000 次免费额度；实际总量还要加页面访问、WebSocket 消息和其他 Durable Object 调用，因此仍需定期查看 Cloudflare 与 Netlify Usage。

## 什么时候才值得迁移

满足任一条件时，再迁移到付费生产架构或自管虚拟机：

1. 启用真实资金；
2. 需要 SIP、逐笔或更高频行情；
3. 多用户同时长期打开 WebSocket；
4. 接近 Cloudflare 或 Netlify 免费额度；
5. 需要 SLA、告警、自动备份、跨区域容灾和人工值守。

真实资金阶段不建议依赖免费 Hobby 服务。更稳妥的方案是付费 VPS/容器、独立数据库、进程守护、外部健康检查、告警和只读监控门户。

## 官方依据

- Cloudflare Workers pricing：Durable Objects 可用于 Free plan；免费额度包含 alarm、WebSocket 和请求计量。  
  https://developers.cloudflare.com/workers/platform/pricing/
- Cloudflare Workers limits：Free plan 100,000 requests/day。  
  https://developers.cloudflare.com/workers/platform/limits/
- Netlify pricing：Free 为 $0，300 credits/month，额度耗尽会暂停。  
  https://www.netlify.com/pricing/
- Render Free：空闲 15 分钟休眠，重新唤醒约需一分钟，免费实例可能重启。  
  https://render.com/docs/free
- Vercel Cron pricing：Hobby 最低频率为每天一次，调度精度为小时级。  
  https://vercel.com/docs/cron-jobs/usage-and-pricing
- Oracle Cloud Free Tier：Always Free Compute 无固定期限，但受资源和区域限制。  
  https://docs.oracle.com/en-us/iaas/Content/FreeTier/freetier.htm
