2 March 2021 - 字数统计：1676 - 阅读大约需要5分钟 - Hits: Loading...

# 使用CloudFlare Workers做一些有趣的功能

by mayx

这是一篇创建于 天前的文章，其中的信息可能已经有所发展或是发生改变。

AI摘要

这篇文章介绍了作者尝试使用CloudFlare Workers实现的一些功能，包括自建反向代理以加快博客访问速度，搭建简单Status Page监测网站可用性，以及对Serverless云函数的玩味。作者提到虽然Workers功能完善且支持KV存储，但免费版的10万次请求限制对大流量网站并不适用。此外，作者认为Serverless更适合小公司，大公司则可能不会将其作为主要业务平台，因为存在服务中断风险。

- 起因
- 首先给自己搭个反代
- 给自己的网站搭一个Status Page吧
- 其他玩法
- 总结

挺不错，但是还是不如PHP

#
起因

之前搞微信图片机器人的时候，我看到P站的图片反代给了一个自己在CloudFlare Workers上建反向代理的代码。

虽然我很早就在用CloudFlare，也知道Workers这个功能，不过我的JavaScript水平不太行，而且当时这个功能还不够完善，就没怎么管，不过既然又见到了，那就来玩玩试试看吧，现在的这个Workers功能不仅已经很完善，而且免费版的限制也少了很多，甚至还支持1G的KV存储。

#
首先给自己搭个反代

之前我用PHP给自己的博客搭了一个简单的反代，不过我用的那个服务商不太行，速度有点慢，而且也不是所有的PHP空间都支持伪静态。那既然有CloudFlare Workers那我们就来试试用这个实现吧。

代码如下：

    addEventListener("fetch", event => {
      let url = new URL(event.request.url);
      url.hostname = "mabbs.github.io";
      event.respondWith(fetch(new Request(url, event.request)));
    });

看起来代码好像更简单了，可惜我的JavaScript水平不行，最多只能照猫画虎，自己写不来……

最终做出来的网址如下： https://blog.mayx.workers.dev/ ，这也算是我博客的另一个为了在国内能访问的域名吧……如果自己有域名的话可以设置路由把其他域名绑在上面。

不过CloudFlare Workers也有一些缺陷，那就是有请求次数限制，免费版只有10w次/天的访问次数限制，对于我这种小站还行，大一点的请求次数一阵子就用光了，相比于限流量的PHP空间，用CloudFlare Workers做这种请求比较密集的站并不合适，不过这个不限流量，如果用来代理下载比较大的文件还是挺不错的。

#
给自己的网站搭一个Status Page吧

我在看Workers的一些介绍时看到了一个很有意思的东西，就是Status Page，用来监测网站可用性的，看起来很有意思而且部署非常简单，具体可以看文档。

这个东西支持一键部署，只要按照说明，很轻松就能搭一个属于自己的Status Page，另外我也给花火学园搭了一个Hanabi Status Page，看起来很专业的样子。

#
其他玩法

其实这就是所谓的Serverless的云函数吧，我以前玩LeanCloud的时候就玩过了，本质其实和那些虚拟网站空间差不多，只是可能和平台的集成度更高，有一堆自制的API，所以效率更高吧。像OneIndex当时也有CloudFlare Workers版的，就是功能有点少，所以我还是搭的PHP版。

如果自己有能力开发的话利用那个KV存储其实想开发什么网站都可以，而且这个支持的语言也很多，甚至也支持PHP，就是和一般的PHP感觉不太一样……

比如我之前开发的图片机器人、Server酱自制版等等都可以用CloudFlare Workers重写。

像这样甚至自己写一个论坛都没问题，不过免费版的限制还是挺多的，虽然1G的KV存储还是挺大的，但是10w次/天的访问还是太少了，要用的话还是不够……如果做成前后端分离的那种可能还好，一个页面就一次请求，要是没有分离的话访问一次就要请求好多次了，相比之下不考虑流量的话可能免费的虚拟网站空间还能支持更多的请求。

#
总结

总之现在Serverless也算是一个现在比较流行的东西（有人说Workers是边缘计算，不过我感觉现在应该不算了），从云计算来看应该算PaaS吧？还是BaaS（后端即服务，不是什么区块链）？倒是可以玩玩试试看，不过也就小公司可能会因为相对便宜而用，大公司肯定不会把业务放到这种东西上，万一这个服务没了，那曾经写的代码可能就全都没用了，如果做了兼容层还好，毕竟每一个平台的API都不一样，现在的Serverless厂家又不可能统一成什么联盟，挂了就没了，但是在服务器上自己写和部署的代码，无论是哪个服务器都可以运行，所以这个也就只能是玩玩看，未来这个可能不会有很大的发展。

tags: CloudFlare - Workers 查看原始文件

#### 推荐文章

Loading...

上一篇：如何给DiscuzX添加像原生一样的404页面
下一篇：亲自体验微信推送的制作感受
想问这篇文章
召唤伊斯特瓦尔