在 CF 的 workers 上撸了一个简单的博客,有站友在这上面部署过复杂的项目吗?

2024-07-10 10:24:48 +08:00
 jamfer
最近才接触 Cloudflare ,感觉很有趣,花了一天撸了个简单的博客,不是用的 pages ,用的是 workers+d1 ,纯动态博客(只放了几篇远古的文章上去,果然个人博客最大的障碍还是更新动力)

写代码的过程中发现 Workers 的 js 跟 node.js 真的很像,但又有本质的不同,serverless 还是限制颇多的(比如无法直接访问文件系统)。但 CF 的免费福利,还是太舒服了。

我忽然有个疑问,V 站是否有人真的在 cf 的 workers 或 pages 上部署了复杂的项目(不是博客),把项目都迁移到 workers 上是否有坑?问这个问题,主要是昨天让我产生了这方面的冲动,CF 有太多优点了。

最后,顺便麻烦大家帮忙测个速: https://blog.gamegene.net
4725 次点击
所在节点    程序员
31 条回复
Track13
2024-07-10 10:31:42 +08:00
慢,开了代理都慢。
cf workers 好像单次执行时间有点短。
0o0O0o0O0o
2024-07-10 10:33:29 +08:00
wonderfulcxm
2024-07-10 10:35:50 +08:00
你这个是 ssr 的吗?
seo 怎么样
sparkinglemon
2024-07-10 10:37:41 +08:00
谈不上复杂吧,我自己的静态(next.js ssg)博客在 Pages 上,然后 worker 写了一个接口转发,写了一个检测网站是否在线的 cron (如果 A 云离线了通过修改 DNS 的方式切换到 B 、C )

我自己的理解就是 serverless 还是更适合一些无状态应用,太过复杂就很依赖平台提供的功能(之前 D1 没有的时候用 KV 存储数据要多蹩脚有多蹩脚)
jamfer
2024-07-10 10:41:08 +08:00
@wonderfulcxm ssr 是啥?
@0o0O0o0O0o 这个做的不错,我昨天也看了一些 cf 上的博客项目,大多数是静态的,我更好奇有没有更复杂的动态语言项目部署在 workers 上
@sparkinglemon 嗯确实,我也感觉 serverless 太依赖平台了,给你什么就用什么
sparkinglemon
2024-07-10 10:46:39 +08:00
@jamfer ssr 是 server-side rendering (服务器收到请求后渲染成 HTML 字符串,然后返回给用户,在浏览器进行 hydration ),区别于 SSG ( Static-Site Generation )

Vue 的 SSR 文档写的算是蛮清晰的: https://cn.vuejs.org/guide/scaling-up/ssr
woodongwong
2024-07-10 10:53:47 +08:00
我说怎么这么快,图片放在了阿里云
jamfer
2024-07-10 10:55:59 +08:00
@sparkinglemon 感谢科普
@wonderfulcxm 是 SSR
jamfer
2024-07-10 10:56:40 +08:00
@woodongwong 嗯,图片还没迁到 R2 ,晚点也迁过来
enrolls
2024-07-10 11:17:16 +08:00
这个 cf worker 可多东西玩了,同理所有云上的 lambda 都一样
cwxiaos
2024-07-10 11:34:05 +08:00
pages 可以做全栈,要依赖 d1 或者 kv,做动态的没啥大问题,

Worker 理论上可以,但静态资源依赖 kv asset 之类的
ByteCat
2024-07-10 12:16:44 +08:00
尝试用 worker 做个小项目,但是有几个问题,主要是因为无状态带来的。
我用的后端框架是 Hono ,ORM 用的是 Drizzle ,每次要进行数据库查询需要初始化一个 db 对象,比较麻烦。不过也算小问题。
另外就是配套的 D1 数据库有查询变量限制,好像是 100 个,这就导致某个比较长的查询,直接运行失败,原因未知,可能 cf 自己的限制,可以通过多次查询解决,但是非常不优雅,用别的 serverless 数据库代替应该也行,比如 neon postgres ,但是就不能白嫖 cf 了,有点恼火。
另外如果迁移到别的平台可能不太方便,暂时没有试过 miniflare 是不是完全兼容 cf 的 workers 。
哦还有一点就是 workers 不太能部署静态资源,这个有点麻烦,需要配合 pages (页面)和某种 s3 存储(存文件,比如 cf 的 r2 )
jamfer
2024-07-10 13:09:29 +08:00
@ByteCat 感谢评论,看来还是不适合中大型项目。
JensenQian
2024-07-10 13:13:16 +08:00
有现成的方案的

https://github.com/openRin/Rin
asuraa
2024-07-10 16:13:01 +08:00
哎 主要是我不会 css 布局
这玩意好难
gorvey
2024-07-10 16:33:19 +08:00
https://cloudflare.chuhai.tools/
我估计自己部署的还是少数,大部分都是 clone 个开源项目完事
epiloguess
2024-07-10 17:07:43 +08:00
我用的部署的 cloudflare pages+nextjs+hono+prisma
坑太多...nextjs 本身就很多坑,prisma 的查询器太大了,workers 打包很容易超出体积限制,
cloudflare 的 binding 只能在 env 里面访问,和 orm 结合初始化实例也算坑?其实可以通过全局变量来解决,这些前面有人都提到了。
免费版 10ms 的限制还是太短了。

不过 workers 本身还是很强的,可以有很多花样,成本也足够低,调用方式也很灵活,用它来分担一部分的运算还是可行的,但是 all-in 的话,我觉得还不行
codehz
2024-07-10 18:22:03 +08:00
我一个用来跑 rss 订阅推送,中值 CPU 时间 45.7ms ,仅用了 D1 服务(
虽然理论上跑 vps 上也一样,但 worker 跑起来不需要维护(
另一个是 cloudflare pages ,用来跑 telegram bot ,同时集成了 webhook 模式和 mini app 的网页,还使用 queue 来实现定时任务(因为 worker/pages 本身不能长时间执行)
serverless 这玩意主要得顺着思路用,不能用传统的程序逻辑来写
1rv013c6aiWPGt24
2024-07-10 19:37:16 +08:00
@codehz rss 订阅推送?老哥能不能给个代码?
codehz
2024-07-10 21:44:47 +08:00
@UncleCAT4 单纯按订阅渠道推送到 tg 群的不同 topic 而已,主要是给我一键离线下载用((至于为啥不直接下载,首先 worker 就不行,其次还想给大家一起用)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1056149

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX