使用CloudflarePages为GitHub仓库中的文件提供免费CDN服务

使用CloudflarePages为GitHub仓库中的文件提供免费CDN服务
Vc工具箱使用 Cloudflare Pages 为 GitHub 仓库中的文件提供免费 CDN 服务
初衷
众所周知github是个免费的云存储仓库,可以当图床可以存文件,免费账号单仓库容量1G,仓库数量理论上可以无限白嫖,真是大善人。国内网络访问github经常抽风偶尔失联,github仓库当外链国内访问困难,于是乎我想到了另一个活菩萨,没错,她就是cloudflare!!!
内容分发网络(CDN)是提升网站性能和用户体验的重要工具。Cloudflare 提供的免费 Pages 服务可以轻松为 GitHub 仓库中的文件添加外链 CDN。本文将详细介绍如何通过 Cloudflare Pages 配置 CDN 服务,让您的 GitHub 文件加载更快、更可靠。
步骤 1:准备工作
在开始之前,您需要完成以下准备:
拥有一个域名
- 注册一个域名(例如
example.com)。 - 将该域名的 DNS 托管到 Cloudflare(后续步骤会详细配置)。
确认 GitHub 文件外链
获取您想要加速的 GitHub 文件原始链接,例如:
1
https://raw.githubusercontent.com/user/repo/main/image.jpg
步骤 2:配置 Cloudflare
2.1 添加域名到 Cloudflare
- 登录 Cloudflare 控制台。
- 点击「添加站点」,输入您的域名(例如
example.com)。 - 根据提示,将域名的 DNS 服务器改为 Cloudflare 提供的地址。此操作需在您的域名注册商处完成。
2.2 创建反向代理(Worker)
Cloudflare Worker 可以将您的自定义域名请求转发到 GitHub 的原始链接。以下是具体步骤:
创建 Worker
进入 Cloudflare 控制台,选择 Workers & Pages → 创建应用程序 → 创建 Worker。
在代码编辑器中粘贴以下 JavaScript 脚本:
1
2
3
4
5
6
7
8
9
10
11
12async function handleRequest(request) {
const allowedPath = '/your-github-username/your-repo-name/'; // 只允许代理此路径下的文件
const requestPath = new URL(request.url).pathname;
// 检查路径是否合法
if (!requestPath.startsWith(allowedPath)) {
return new Response('Forbidden: Path not allowed', { status: 403 });
}
const targetUrl = `https://raw.githubusercontent.com${requestPath}`;
return fetch(targetUrl, { headers: { 'User-Agent': 'Mozilla/5.0' } });
}注意:将
your-github-username和your-repo-name替换为您的 GitHub 用户名和仓库名。
部署并绑定域名
点击「部署」保存 Worker。
在 Worker 的「触发器」选项卡中,绑定自定义路由,例如:
1
cdn.example.com/*
步骤 3:配置 DNS 解析
- 进入 Cloudflare 的 DNS 管理页面。
- 添加一条 CNAME 记录:
- 名称:
cdn(或您喜欢的子域名,如static) - 目标:您的 Worker 域名(例如
your-worker.your-account.workers.dev) - 代理状态:启用(显示橙色云图标)
- 名称:
步骤 4:测试访问
配置完成后,您可以通过以下方式验证 CDN 是否生效:
原始 GitHub 文件链接
1 | https://raw.githubusercontent.com/user/repo/main/image.jpg |
通过 Cloudflare CDN 的链接
1 | https://cdn.example.com/user/repo/main/image.jpg |
访问自定义 CDN 链接,确认文件是否成功加载。
总结
通过以上步骤,您可以使用 Cloudflare Pages 为 GitHub 仓库中的文件提供免费的 CDN 服务。这种方法不仅提升了文件访问速度,还利用了 Cloudflare 的全球网络和安全功能。无论您是初学者还是经验丰富的开发者,都可以轻松实现这一功能。开始尝试吧!






