通过 Cloudflare Worker 将下载入口统一成:
https://你的域名/win/{version}.exehttps://你的域名/linux/{version}.AppImagehttps://你的域名/macos/{version}.dmg
Worker 会按命名规则拼接 GitHub Release 资产名:
ELXMOJ-${version}-${os}-${arch}.${ext}
并由 Worker 代理拉取 XMOJ-Script-dev/ELXMOJ 对应 release 资产并返回下载流。
os路径映射:win/windows->windowslinux->linuxmac/macos/darwin/osx->macos
arch默认从 User-Agent 推断,可用查询参数覆盖:?arch=x64?arch=arm64?arch=x86
示例:
- 请求:
/win/1.2.3.exe?arch=x64 - 目标资产:
ELXMOJ-1.2.3-windows-x64.exe
- 安装依赖(全局安装 Wrangler,若未安装):
npm i -g wrangler
- 登录 Cloudflare:
wrangler login
- 在项目目录发布:
wrangler deploy
- 可选:设置 GitHub Token(提高 API 速率限制)
wrangler secret put GITHUB_TOKEN- 仅在私有仓库/额外鉴权场景需要,当前实现不依赖 GitHub REST API 查 release
- 已固定只允许下载:
XMOJ-Script-dev/ELXMOJ的 Release 资产。 - 不提供仓库切换配置项。
GET /healthz
返回 Worker 配置和用法说明。
- 当前实现是“Worker 代理下载”,不是 302 重定向。
- 支持
Range请求,下载器可断点续传(取决于上游响应)。 - 客户端只看到你的域名下载地址,不会直接暴露 GitHub 资产 URL。
- 使用
caches.default缓存完整文件响应(仅GET且无Range)。 - 缓存键会加入解析后的
arch,避免不同架构文件串缓存。 - 版本化文件默认写入:
Cache-Control: public, max-age=86400, s-maxage=31536000, immutable。 Range请求会绕过缓存,直接回源并透传分片响应。
可通过响应头观察缓存状态:
x-downhelper-cache: HIT:命中边缘缓存x-downhelper-cache: MISS-STORED:未命中并已写入缓存x-downhelper-cache: BYPASS-RANGE:分片请求绕过缓存x-downhelper-cache: BYPASS:其他绕过场景