第一次的Cloudflare worker
Cloudflare真好玩
在nisama强烈的推荐下我怀着好奇的心态开始了cloudflare的疯狂踩坑,无非是这一个月挺多了nisama关于‘啊无服务器实在是太爽啦’,‘白嫖真爽啊’,‘嗯,白嫖下次还白嫖’,Cloudflare(NYSE:NET)是一家总部位于旧金山的美国跨国科技企业,以向客户提供基于反向代理的内容分发网络(Content Delivery Network, CDN)及分布式域名解析服务(Distributed Domain Name Server)为主要业务。利用 Cloudflare 全球任播网络,Cloudflare可以帮助受保护站点抵御包拒绝服务攻击等网络攻击,确保该网站长期在线,同时提升网站的性能、加载速度以改善访客体验。嗯cloudflare是最富盛名的cdn服务商,不过虽然它很香但抵不住它贵啊,cloudflare上很多体验良好的服务都是收费的,当然一提到cdn最优秀的服务商当然是cloudflare(?当然对于cloudflare上提供的免费cdn当然没有逃过可爱的勤劳的中国人民撸羊毛的机会,于是你会简单不管是网站,各种稀奇古怪的应用甚至是各种梯子都在用cloudflare做CDN,毕竟入口带宽也是有限的,这就导致在用网高峰期甚至是日常使用的响应速度不尽如人意,当然也是因为毕竟也是国外的节点啦,下图为我2021年3月8日的测试结果。

1.1.1.1是一款免费的域名解析服务,也就是域名服务器,由CloudFlare与APNIC共同拥有与维护。该服务于2018年4月1日发表启用且被Cloudflare称为“互联网最快、以隐私优先的消费者端DNS服务”(the Internet’s fastest, privacy-first consumer DNS service)
当然做为一个正经人我并没有怎么薅过cloudflare的羊毛,当然让我对cloudflare直呼真香的也并他们的cdn而是他们的Cloudflare Workers!!不过在疯狂踩坑之前有必要了解一下和Cloudflare Workers有关的无服务器计算
关于这点我想cloudflare的文档提供了详细的解释
无服务器计算是一种按需提供后端服务的方法。无服务器架构允许用户编写和部署代码,而不必担心底层基础设施。从无服务器提供商获得后端服务的公司将根据其计算量来付费,而不必保留和支付固定数量的带宽或服务器,因为该服务可自动扩展。请注意,尽管称为无服务器,但它仍使用了物理服务器,只是开发人员不需要考虑它们的存在。
在Web早期,任何想要构建Web应用程序的人都必须拥有运行服务器所需的物理硬件,这是一项繁琐而昂贵的工作。
之后是云,可以远程租用固定数量的服务器或一定数量的服务器空间。租用这些固定服务器空间单元的开发人员和公司通常会过度购买,以确保流量或活动的激增不会因为超过每月限额而中断其应用程序。这意味着通常支付的大部分服务器空间都浪费了。云供应商已经引入了自动扩展模型来解决该问题,但是即使是自动扩展,也可能因为恶意活动激增(例如 DDoS 攻击)而产生非常昂贵的成本。
无服务器计算允许开发人员在灵活的“按需付费”的基础上购买后端服务,这意味着开发人员仅需为使用的服务付费。这就像从每月固定限额的手机数据套餐切换到只为实际使用的每个字节数据收费的套餐一样。
“无服务器”一词在某种程度上具有误导性,因为它仍然有服务器提供这些后端服务,但是所有服务器空间和基础设施问题都由提供商处理。无服务器意味着开发人员可以完全不用担心服务器。
什么是后端服务?前端和后端之间有什么区别?
应用程序开发通常分为两个领域:前端和后端。前端是用户看到并与之交互的应用程序部分,例如视觉设计。后端是用户看不到的部分。其中包括应用程序文件所在的服务器以及持久存储用户数据和业务逻辑的数据库。

关于这点我的回答是完全够用,
-
每天免费提供100000个请求
-
每天 100,000 次读取操作
-
每天 1,000 次写入、删除、列出操作
-
提供大概1GB的kv储存空间
另外付费版也就每月5dollar啦(,但是对于个人使用来看免费额度已经非常非常够用了,其次主要还是白嫖能带来满满的满足感(一拳一个白嫖怪)。
hello cloudflare worker
接下来我们可以基于以上来写一个非常非常简单的栗子。
API
比如说我们现在想要写一个每日可以返回bing壁纸的动态api,首先我们需要获取bing壁纸的url,打开f12就能很简单的获取到壁纸链接,这里我们就直接粗暴的直接打开worker,当然你也可以按照官方文档安装Workers CLI,按照官方的步骤一步一步的来,这里仅仅进行一个非常简单的演示,我们很容易就能编写到以下代码
1 | async function handleRequest(request) { |
这里的
fetch()是 XMLHttpRequest 的升级版,用于在 JavaScript 脚本里面发出 HTTP 请求。
然后直接吧这段代码粘贴到worker里面就行啦

创建worker的时候会自动分配一个子域名,当然支持自定义域名,具体请参考文档

然后访问子域名/bing就好啦,可以看到状态码是200,这里我的子域名是https://empty-credit-b440.youmingsama.workers.dev/ 于是就可以得到https://empty-credit-b440.youmingsama.workers.dev/bing 就得到了我们想要的图片啦
于是下面几个api,实现几乎的原理和bing大同小异
-
获取bing的每日一图 https://empty-credit-b440.youmingsama.workers.dev/bing
-
获取bing图片信息 https://empty-credit-b440.youmingsama.workers.dev/mbing
默认返回json格式
-
返回一张随机生成的动漫人物头像 https://empty-credit-b440.youmingsama.workers.dev/suijilaopo
-
随机返回一言: https://empty-credit-b440.youmingsama.workers.dev/hitokoto
默认返回txt格式
-
今日网抑云 https://empty-credit-b440.youmingsama.workers.dev/wangyiyun
默认返回txt格式
-
反代网站:*************************************************************************************************(高度加密)
cloudflare大法好
worker加上kv储存可玩性可拓展性非常强,这里演示的API仅仅是一种最简单的使用方法,不仅仅是网站,各种快速搭建的应用,cloudflare更让我们看到了无限的可能。
所以白嫖大法好




































