关于Cloudflare

前言

从2019年开始,我陆续创立了几个博客。然而,随着写作热情的波动、个人时间的限制以及服务器续费的经济压力,这些站点的运营状况时断时续,甚至有些博客在服务器到期后彻底关闭,未能保留之前发布的内容。这让我深感遗憾,也促使我寻找一种更加稳定、经济高效的方式来搭建个人博客。

就在那时,我偶然接触到了Cloudflare。Cloudflare不仅仅提供强大的网络安全和性能优化功能,还允许用户免费使用其基础服务。这一发现让我深受启发,决定将我的博客迁移至Cloudflare平台。如此一来,我无需再为服务器的续费问题烦恼,只需承担域名费用,就能确保博客的稳定运行。

从迁移至Cloudflare至今,我一直享受着其免费提供的优质资源,但苦于没有机会全面介绍Cloudflare的优势和具体使用方法。此次,我决定通过这篇文章为大家详细解析Cloudflare。

我当前博客中的所有项目,除MS OAuth2API外,均采用Cloudflare部署。

Cloudflare Workers

API项目示例:点此查看

什么是Cloudflare Workers?

Cloudflare Workers是一种基于无服务器架构的服务,允许开发者在Cloudflare的全球边缘网络上部署JavaScript应用程序、API和微服务,而无需配置或管理任何服务器。这一特性为许多应用场景提供了可能,例如API构建、动态重定向、网络爬虫及服务集成等。

下面是一个简单的Cloudflare Workers示例,实现了一个返回问候消息的API:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})

async function handleRequest(request) {
const url = new URL(request.url);
const path = url.pathname;

if (path === '/greet') {
const name = url.searchParams.get('name') || 'World';
const response = new Response(`Hello, ${name}!`, {
headers: { 'content-type': 'text/plain' },
});
return response;
}

// 默认响应
return new Response('Not Found', { status: 404 });
}

通过上述代码,当用户访问/greet路径并传递一个name参数时,Cloudflare Worker会动态生成相应的欢迎消息。

当然,仅靠简单的文本返回可能无法满足所有需求,例如数据的持久化存储也是必需的。为此,Cloudflare提供了多种免费的数据存储方案,包括KV(键值存储)、R2(对象存储)和D1(SQL数据库)。

我当前站点的总点击量统计使用了D1存储,该服务每天支持10万次写入、500万次读取以及5GB存储空间,足以满足个人用户的需要。

Cloudflare Pages

什么是Cloudflare Pages?

Cloudflare Pages是一个基于GitHub Pages的静态站点托管服务,它允许用户使用GitHub仓库作为源代码管理工具,并自动构建与部署网站。

它支持多种流行的前端框架,例如Next.js、Gatsby、Hugo、Jekyll、Umi、React、Remix和Hexo等。

使用方法非常简单,只需将你需要部署的页面文件放置在GitHub仓库中,并将其与Cloudflare连接,Cloudflare Pages便会自动完成构建与部署过程。

当然,即使不使用GitHub,你也可以直接上传静态html、css、js文件,Cloudflare Pages同样会自动处理好部署工作。

结语

Cloudflare真的是大善人。