Skip to content

基于 Cloudflare Workers 的 GitHub 加速代理。/ GitHub acceleration proxy powered by Cloudflare Workers.

License

Notifications You must be signed in to change notification settings

Aethersailor/cf-ghproxy-worker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🚀 GitHub Proxy

基于 Cloudflare Workers 的高性能 GitHub 文件加速代理

High-Performance GitHub Acceleration Proxy on Cloudflare Workers


Deploy to Cloudflare Workers

License: GPL v3 Cloudflare Workers Maintained GitHub Stars GitHub Forks GitHub Issues Last Commit


📖 English Documentation



📚 目录


✨ 核心特性

🚀 零配置部署

无需 KV 存储,一键即用
30 秒完成部署

⚡ 智能缓存

多层缓存策略
根据路径类型自动调整 TTL

🌐 全域名支持

支持 github.com 等
所有 GitHub 相关域名

📦 完整功能

断点续传、CORS 支持
ETag 验证

🔧 高可靠性

重试机制、超时控制
连接优化

🎨 精美首页

中英双语界面
支持深色/浅色主题


🎨 界面特性

  • 🌓 智能主题 - 自动跟随系统浅色/深色主题,支持手动切换
  • 🌍 自动语言检测 - 根据浏览器语言自动选择中文/英文界面
  • 🔄 实时主题同步 - 系统主题变化时自动切换,无需刷新
  • 📋 域名自动替换 - 示例 URL 自动显示当前访问域名,即用即改
  • 🎯 状态记忆 - 使用 sessionStorage 保存用户偏好,刷新后恢复系统设置

📊 缓存策略

系统根据文件路径自动选择最优缓存策略:

路径类型 示例 Edge 缓存 浏览器缓存 版本控制
动态内容 /latest/, /main/, /nightly/ 1 小时 5 分钟 ETag
固定版本 /v1.0/, /tags/, /releases/download/v1.0/ 30 天 1 天 日期
普通路径 其他所有路径 1 天 1 小时 ETag

🚀 快速部署

💡 30 秒快速上手

  1. 点击上方 Deploy to Cloudflare Workers 按钮
  2. 登录 Cloudflare 并授权 GitHub 仓库访问
  3. 点击 Deploy 按钮,等待 1-2 分钟
  4. 获取 Worker URL:https://your-worker.workers.dev
  5. 将 GitHub URL 的域名替换为你的 Worker 域名即可使用!

方法一:一键部署(推荐)

点击下方按钮,自动部署到 Cloudflare Workers:

Deploy to Cloudflare Workers


方法二:手动部署

📖 点击展开详细步骤

前置要求:

  • Cloudflare 账号(免费注册
  • (建议)托管到 Cloudflare 的域名 - 用于绑定自定义域名,避免 *.workers.dev 域名被封锁的风险

部署步骤:

  1. 登录 Cloudflare Dashboard

    访问:https://dash.cloudflare.com/
    
  2. 创建 Worker

    • 点击左侧菜单 Workers & Pages
    • 点击 Create Application
    • 选择 Create Worker
    • 输入 Worker 名称(例如:github-proxy
    • 点击 Deploy
  3. 部署代码

    • 点击 Edit Code 按钮
    • 删除默认代码
    • 复制 worker.js 的完整内容
    • 粘贴到编辑器
    • 点击右上角 Save and Deploy
  4. 绑定自定义域名(可选)

    • 在 Worker 详情页,点击 SettingsTriggers
    • 点击 Add Custom Domain
    • 输入域名(例如:gh.example.com
    • 等待 DNS 配置生效(通常 1-5 分钟)
  5. 完成部署

    • 默认 URL:https://your-worker.workers.dev
    • 自定义域名:https://gh.example.com(如已配置)

方法三:自动部署(推荐用于持续维护)

配置 GitHub Actions 实现代码 push 后自动部署,保持 Worker 与仓库同步。

⚠️ 注意:一键部署只在首次点击时生效,后续 GitHub 代码更新不会自动同步到 Worker。如需持续维护,建议配置自动部署。

📖 配置步骤:查看 自动部署配置指南


📖 使用指南

基本用法

将 GitHub URL 的域名替换为您的 Worker 域名:

# 原始 URL
https://github.com/torvalds/linux/archive/refs/tags/v6.6.tar.gz

# 加速 URL(域名路径格式)
https://your-worker.workers.dev/github.com/torvalds/linux/archive/refs/tags/v6.6.tar.gz

# 或使用完整 URL 格式(直接在代理域名后粘贴完整链接)
https://your-worker.workers.dev/https://github.com/torvalds/linux/archive/refs/tags/v6.6.tar.gz

支持的路径格式

格式 说明 示例
📦 域名路径格式 去掉 https://,保留域名和路径 proxy.dev/github.com/user/repo/...
🔗 完整 URL 直接粘贴完整 GitHub 链接 proxy.dev/https://github.com/user/repo/...

实际使用示例

📥 下载 Release 文件
# 下载 Clash Meta 核心
wget https://your-worker.workers.dev/github.com/MetaCubeX/mihomo/releases/download/v1.18.0/mihomo-linux-amd64

# 下载 Node.js 源码
curl -O https://your-worker.workers.dev/github.com/nodejs/node/archive/refs/tags/v20.10.0.tar.gz
📄 获取 Raw 文件
# 获取脚本文件
curl https://your-worker.workers.dev/raw.githubusercontent.com/nvm-sh/nvm/master/install.sh | bash

# 获取配置文件
wget https://your-worker.workers.dev/raw.githubusercontent.com/torvalds/linux/master/.gitignore
📝 在脚本中使用
#!/bin/bash

# 设置镜像地址
GITHUB_PROXY="https://your-worker.workers.dev"

# 下载文件
download_file() {
    local repo=$1
    local tag=$2
    local filename=$3
    
    wget "${GITHUB_PROXY}/github.com/${repo}/releases/download/${tag}/${filename}"
}

# 使用示例
download_file "cli/cli" "v2.40.0" "gh_2.40.0_linux_amd64.tar.gz"
🔄 Git Clone 加速
# 方法1: 使用 git config
git config --global url."https://your-worker.workers.dev/github.com/".insteadOf "https://github.com/"
git clone https://github.com/torvalds/linux.git

# 方法2: 直接替换 URL
git clone https://your-worker.workers.dev/github.com/torvalds/linux.git

⚙️ 配置说明

worker.js 中可自定义以下参数:

缓存配置

参数 默认值 说明
EDGE_CACHE_SECONDS 2592000 (30天) 边缘缓存 TTL
SWR_SECONDS 86400 (1天) 过期后仍可用时间
BROWSER_CACHE_SECONDS 3600 (1小时) 浏览器缓存 TTL

性能配置

参数 默认值 说明
ENABLE_COMPRESSION true 启用 Brotli/Gzip 压缩
ENABLE_EARLY_HINTS true 启用 Early Hints (HTTP 103)
MAX_RETRIES 2 请求失败最大重试次数
RETRY_DELAY_MS 500 重试间隔(毫秒)
REQUEST_TIMEOUT_MS 30000 请求超时时间(毫秒)

🔍 性能优化

🌐 网络层优化

  • HTTP/3 & HTTP/2 - 多路复用,减少连接开销
  • Early Hints - 提前预连接,降低首字节时间
  • Keep-Alive - 连接复用,减少 TCP 握手
  • Smart DNS - 使用 Cloudflare DNS (1.1.1.1)

💾 缓存优化

  • 多层缓存 - 浏览器 → Worker → Edge 三层缓存
  • 智能失效 - 基于 ETag 和日期的自动版本管理
  • Vary 支持 - 基于编码类型的缓存变体
  • SWR 机制 - 后台异步更新,减少阻塞

🛡️ 可靠性优化

  • 智能重试 - 指数退避算法,避免雪崩
  • 超时控制 - 30 秒超时,避免长时间等待
  • 错误降级 - 支持配置备用镜像源

📦 内容优化

  • 自动压缩 - HTML/CSS/JS Minify
  • 图片优化 - Polish 有损压缩
  • 智能加载 - Mirage 自适应图片

📊 响应头说明

Worker 会添加以下调试头:

响应头 说明 示例值
X-Cache-Status 缓存命中状态 HIT / MISS
X-Cache-Strategy 缓存策略类型 dynamic / versioned / default
X-Mirror-Version 缓存版本号 20231223 / abc123... (ETag)
X-GitHub-Target 实际请求的 GitHub URL https://github.com/...
X-Response-Time 响应时间 1234ms
🔍 调试示例
curl -I https://your-worker.workers.dev/cli/cli/releases/download/v2.40.0/gh_2.40.0_linux_amd64.tar.gz

HTTP/2 200
x-cache-status: HIT
x-cache-strategy: versioned
x-mirror-version: 20231223
x-response-time: 45ms

⚠️ 注意事项

📌 限制说明

  • 免费版每日 100,000 次请求限制
  • 单文件大小限制 100MB(Cloudflare 限制)
  • CPU 执行时间 50ms(免费版)/ 无限制(付费版)

💾 缓存行为

  • 浏览器缓存:根据策略自动调整(5分钟 - 1天)
  • 边缘缓存:根据策略自动调整(1小时 - 30天)
  • 版本号:每天 UTC 00:00 自动更新

💡 使用建议

  • 建议先测试小文件,确认正常后再用于大文件
  • 如需频繁访问,建议绑定自定义域名
  • 大量请求建议升级到 Workers Paid 计划

🗑️ 清除缓存

  • Dashboard:CachingConfigurationPurge Cache
  • API:使用 Cloudflare API 按 URL 清除
  • 自动:等待缓存过期或版本号更新

🔧 故障排查

❌ 404 Not Found
  • 检查路径格式是否正确
  • 确认 GitHub 上该文件确实存在
  • 查看 X-GitHub-Target 头确认目标 URL
🔄 缓存未命中(X-Cache-Status: MISS)
  • 首次请求必定 MISS,再次请求应为 HIT
  • 检查是否为动态路径(/latest/ 等)
  • 查看 X-Cache-Strategy 确认策略类型
🐢 下载速度慢
  • 检查是否使用了 Cloudflare CDN 节点
  • 确认本地网络到 Cloudflare 的连接质量
  • 查看 X-Response-Time 分析延迟来源

📝 更新日志

查看 Releases 获取版本历史。



🤝 参与贡献

欢迎提交 Issue 和 Pull Request!

🐛 报告问题 · 💡 功能建议 · 📖 完善文档


贡献步骤:

  1. Fork 本项目
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

📄 许可证

本项目采用 GNU General Public License v3.0 许可证。


🙏 致谢



Made with ❤️ by Aethersailor

⭐ 为项目点星  ·  🍴 Fork 项目

About

基于 Cloudflare Workers 的 GitHub 加速代理。/ GitHub acceleration proxy powered by Cloudflare Workers.

Topics

Resources

License

Stars

Watchers

Forks

Contributors 2

  •  
  •