Cloudflare 提供每天 10 万次的免费请求额度
如何部署Cloudflare Worker?
- 首页:https://workers.cloudflare.com
- 注册,登陆,
Start building
,取一个子域名,Create a Worker
。 - 复制下面代码到左侧代码框,
Save and deploy
。如果正常,右侧应显示首页。 - 收藏地址框中的
https://xxxx.子域名.workers.dev
,以后可直接访问
// 定义 Github 信息
const github_Name = 'Your-Github-UserName'; //Github 用户名
const github_Repo = 'Your-Github-RepoName'; //Github 仓库名
const github_base = `${github_Name}/${github_Repo}`;
/* 配置到此结束 */
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function bloghandle(request) {
const urlObj = new URL(request.url);
const path = urlObj.href.substr(urlObj.origin.length);
const init = {
method: "GET"
};
var data = '';
if (path) {
var url = "https://raw.githubusercontent.com/" + github_base + "/master" + path + '/index.html';
const response = await fetch(url, init);
var resptxt = await response.text();
data += resptxt;
} else {
var url = "https://raw.githubusercontent.com/" + github_base + '/master/index.html';
const response = await fetch(url, init);
if (response.status == 200) {
var resptxt = await response.text();
data += resptxt.replace(/`/g, "\\`");
} else {
var url = "https://raw.githubusercontent.com/" + github_base + '/master/404.html';
const response = await fetch(url, init);
if (response.status == 200) {
var resptxt = await response.text();
data += resptxt.replace(/`/g, "\\`");
} else {
data += `404 Page Not Found!`;
}
}
}
return data;
}
/**
* Respond to the request
* @param {Request} request
*/
async function handleRequest(request) {
var resp = new Response(await bloghandle(request), { "Content-type": "text/html;charset=UTF-8", status: 200 });
resp.headers.set("Content-Type", "text/html");
return resp;
}
评论