You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mabbs/_posts/2021-03-02-workers.md

39 lines
4.5 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
layout: post
title: 使用CloudFlare Workers做一些有趣的功能
tags: [CloudFlare, Workers]
---
挺不错但是还是不如PHP<!--more-->
# 起因
之前搞[微信图片机器人](/2021/02/23/picbotpro.html)的时候我看到P站的图片反代给了一个自己在CloudFlare Workers上建反向代理的[代码](https://pixiv.cat/reverseproxy.html)。
虽然我很早就在用CloudFlare也知道Workers这个功能不过我的JavaScript水平不太行而且当时这个功能还不够完善就没怎么管不过既然又见到了那就来玩玩试试看吧现在的这个Workers功能不仅已经很完善而且免费版的限制也少了很多甚至还支持1G的KV存储。
# 首先给自己搭个反代
之前我用PHP给自己的博客搭了一个[简单的反代](/2021/01/06/proxy.html)不过我用的那个服务商不太行速度有点慢而且也不是所有的PHP空间都支持伪静态。那既然有CloudFlare Workers那我们就来试试用这个实现吧。
代码如下:
```js
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用来监测网站可用性的看起来很有意思而且部署非常简单具体可以看[文档](https://github.com/eidam/cf-workers-status-page#getting-started)。
这个东西支持一键部署只要按照说明很轻松就能搭一个属于自己的Status Page另外我也给花火学园搭了一个[Hanabi Status Page](https://status.sayhuahuo.com/),看起来很专业的样子。
# 其他玩法
其实这就是所谓的Serverless的云函数吧我以前玩LeanCloud的时候就玩过了本质其实和那些虚拟网站空间差不多只是可能和平台的集成度更高有一堆自制的API所以效率更高吧。像OneIndex当时也有CloudFlare Workers版的就是功能有点少所以我还是搭的PHP版。
如果自己有能力开发的话利用那个KV存储其实想开发什么网站都可以而且这个支持的语言也很多甚至也支持PHP就是和一般的PHP感觉不太一样……
比如我之前开发的[图片机器人](/2021/02/23/picbotpro.html)、[Server酱自制版](/2021/02/26/serverchancorp.html)等等都可以用CloudFlare Workers重写。
像这样甚至自己写一个论坛都没问题不过免费版的限制还是挺多的虽然1G的KV存储还是挺大的但是10w次/天的访问还是太少了,要用的话还是不够……如果做成前后端分离的那种可能还好,一个页面就一次请求,要是没有分离的话访问一次就要请求好多次了,相比之下不考虑流量的话可能免费的虚拟网站空间还能支持更多的请求。
# 总结
总之现在Serverless也算是一个现在比较流行的东西有人说Workers是边缘计算不过我感觉现在应该不算了从云计算来看应该算PaaS吧还是BaaS后端即服务不是什么区块链倒是可以玩玩试试看不过也就小公司可能会因为相对便宜而用大公司肯定不会把业务放到这种东西上万一这个服务没了那曾经写的代码可能就全都没用了如果做了兼容层还好毕竟每一个平台的API都不一样现在的Serverless厂家又不可能统一成什么联盟挂了就没了但是在服务器上自己写和部署的代码无论是哪个服务器都可以运行所以这个也就只能是玩玩看未来这个可能不会有很大的发展。