这个项目能做什么

该仓库为免费的 Render Web 服务提供了一种保活机制。它将 GitHub Actions 工作流与一个小型 Node.js 脚本结合,定期向配置的目标 URL 发送 HTTP GET 请求,使服务不会因不活动而休眠。 所解决的问题:当服务器繁忙时,GitHub Actions 的免费调度器可能会延迟较短的 cron 间隔(例如每 5 分钟一次),导致运行之间出现空档。Render 免费层服务在约 15 分钟无流量后会休眠,因此错过 ping 可能引发冷启动。 README 中描述的方案: - 活动的 14 分钟会话:每个 GitHub Actions 作业运行约 14 分钟,并每 4 分钟发送一次 ping(在第 0、4、8、12 分钟)。 - 多个 cron 触发器:使用诸如 */10 * * * * 和 5,15,25,35,45,55 * * * * 的计划,以便持续启动新的运行器会话。 - 所述目标是持续覆盖,因为在活动的 14 分钟窗口内每 4 分钟一次 ping 会保持在 15 分钟不活动阈值以下。 功能: - Node.js 22 原生 API:使用内置的 fetch() 和 node:timers/promises,无外部 npm 依赖。 - 重试逻辑:遇到网络错误或非 2xx 响应时,最多重试 3 次,每次延迟 10 秒。 - 控制台输出:记录 ISO UTC 时间戳、HTTP 状态码、以毫秒为单位的响应时间、成功/失败结果以及会话循环计数。 - 手动触发:支持 workflow_dispatch 以立即运行。 配置:目标 URL 在 ping.js 顶部定义为 TARGET_URL,当前指向一个 Render 托管的端点。更改端点需要编辑该常量并推送更改。 部署:README 指示用户提交更新后的文件并推送到 main 分支,之后 GitHub Actions 会开始活动的 ping 会话。