FckSignups 实时性方案:tools.json 从提交到上线的完整延迟分析
【免费下载链接】FckSignupsA list of tools that are open-source, in-browser, and require no-signups!项目地址: https://gitcode.com/GitHub_Trending/fc/FckSignups
FckSignups(现名 NoSignups)是一个免注册的开源工具目录,收录 200+ 个浏览器直开、无需账号的工具。本文以FckSignups 实时性为主线,完整拆解它的数据文件 tools.json 从「用户提交」到「网站上线可见」的 5 个环节延迟,让你看懂一个轻量目录站如何做到"分钟级更新、零缓存烦恼"。
一、先看全局:一条极简的实时数据流水线
FckSignups 的实时性方案核心只有一句话:数据与页面解耦,JSON 在运行时按需抓取。
用户提交表单 → Cloudflare Worker 建 Issue → 自动化脚本解析入库 → 人工审核提交 → 静态构建部署 → 前端运行时 fetch tools.json整条链路里没有数据库、没有消息队列,只有三个文件在协作:
| 角色 | 文件 | 职责 |
|---|---|---|
| 数据源 | tools.json | 唯一事实来源,存所有工具条目 |
| 提交入口 | handleSubmitTool.ts | 把表单变成 GitHub Issue |
| 读取端 | useTools.ts | 页面加载时拉取 JSON 并渲染 |
二、延迟逐段拆解:5 个环节各花多少时间
环节 1|用户提交 → GitHub Issue(秒级,约 1~3 秒)
用户在网站点 "SUBMIT A TOOL",表单数据经 worker.ts 路由分发到handleSubmitTool。Worker 校验字段后,把提交内容打包成一段机器可读的<SUBMISSION>...</SUBMISSION>自动化字符串(见 handleSubmitTool.ts),直接调用 GitHub API 创建 Issue。
这一段的延迟 = 一次 HTTPS 请求 + GitHub API 响应,通常3 秒以内,无需人工介入。
环节 2|自动补全 stars 与 license(秒级)
维护者拿到 Issue 链接后,运行 addToolAutomation.py:它从 Issue 正文提取<SUBMISSION>字段,再由 githubBridge.py 的GitHubRepoBridge实时查询仓库的star 数和SPDX 许可证,自动填充进新工具条目。
批量场景更聪明:updateStarsAutomation.py 用 GraphQL 每 100 个仓库一组批量刷新全站 stars,避免 REST API 限流——这是"全站 star 数保持新鲜"的关键脚本。
环节 3|人工审核与入库(分钟~天级,主要瓶颈)⚙️
自动化工具解析完 Issue 后,会交互式让维护者确认分类、标签、描述(addToolAutomation.py),最终由 addTool.py 的updateJSONFile覆写 tools.json。
整条链路最慢的是这一段——它依赖人。这也是 FckSignups 的有意设计:目录质量靠人工把关(工具必须免注册、描述 140 字符内),而不是来者不拒的纯自动化。
环节 4|提交 → 构建部署(分钟级)
维护者把 tools.json 提交到仓库后,构建命令就是 package.json 里的tsc && vite build,产物为纯静态文件。由于tools.json 本身不参与打包(它是运行时被抓取的静态资源),构建速度只取决于 TS 编译 + Vite 打包,通常 1 分钟内完成。
环节 5|页面加载 → 用户看到新数据(秒级,无重建)
这是实时性的"临门一脚"。useTools.ts 的加载策略是三级降级:
- 开发环境先取本地 JSON(
DEV_JSON_URL); - 生产环境直接 fetch
PROD_JSON_URL拿最新 tools.json; - 全部失败时回退到打包内嵌的 fallbackData.ts,站点依然可用。
只要 CDN 上的 tools.json 已更新,用户刷新页面即可看到新工具——不需要重新构建、不需要清缓存,延迟 ≈ 一次 HTTP GET。
三、延迟汇总:谁在拖后腿?
| 环节 | 耗时量级 | 是否自动化 |
|---|---|---|
| 提交 → GitHub Issue | 1~3 秒 | ✅ 全自动 |
| stars / license 补全 | 秒级 | ✅ 全自动 |
| 人工审核入库 | 分钟 ~ 天 | ❌ 人工 |
| 构建 + 部署 | 约 1 分钟 | ✅ CI 自动 |
| 运行时数据加载 | 秒级 | ✅ 自动 |
结论很清晰:FckSignups 的实时性瓶颈不在技术栈,而在"人"。机器能做的(建单、查数据、构建、分发)全部压缩到了秒级/分钟级;技术架构把非人工延迟做到了几乎可忽略。
四、这个方案好在哪?(可抄的作业)
- 单一数据源:全站只认 tools.json,前端、脚本、Worker 都围绕它,没有多份数据同步问题;
- 提交即留痕:每次提交变成一条带自动化标记的 GitHub Issue(handleReportTool.ts、handleSuggestTool.ts 同理处理举报与建议),审核记录天然可追溯;
- 优雅降级:fallbackData.ts 保证即使远程数据拉取失败,站点也有兜底内容可展示;
- 数据不打包:JSON 走运行时 fetch 而非构建期注入,改数据 = 改文件,天然"准实时"。
如果你想给自己的项目做类似的实时目录,最小可行方案就是三件套:
- 一个
tools.json作为唯一数据源; - 一个 Cloudflare Worker 把用户表单转成 Issue(参考 cloudflare-worker/);
- 一组 Python 管理脚本完成解析入库(参考 management_tools/)。
需要动手实践的话,先 clone 仓库(地址:https://gitcode.com/GitHub_Trending/fc/FckSignups ),再执行npm install && npm run dev即可本地跑起来,对照 README.md 的 Tool schema 表格逐字段理解 tools.json 的结构,基本 10 分钟就能读懂整个实时链路。
五、小结
FckSignups 证明了:实时目录站不需要重型架构。它的核心关键词是解耦 + 自动化 + 兜底——机器环节秒级响应,人工环节集中审核,数据文件运行时加载。对新手来说,这套"JSON + Worker + 管理脚本"的轻量组合,正是从提交到上线延迟分析中性价比最高的答案。
【免费下载链接】FckSignupsA list of tools that are open-source, in-browser, and require no-signups!项目地址: https://gitcode.com/GitHub_Trending/fc/FckSignups
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考