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

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

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

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

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

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

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

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

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

不过 workers 本身还是很强的,可以有很多花样,成本也足够低,调用方式也很灵活,用它来分担一部分的运算还是可行的,但是 all-in 的话,我觉得还不行
codehz
68 天前
我一个用来跑 rss 订阅推送,中值 CPU 时间 45.7ms ,仅用了 D1 服务(
虽然理论上跑 vps 上也一样,但 worker 跑起来不需要维护(
另一个是 cloudflare pages ,用来跑 telegram bot ,同时集成了 webhook 模式和 mini app 的网页,还使用 queue 来实现定时任务(因为 worker/pages 本身不能长时间执行)
serverless 这玩意主要得顺着思路用,不能用传统的程序逻辑来写
1rv013c6aiWPGt24
68 天前
@codehz rss 订阅推送?老哥能不能给个代码?
codehz
68 天前
@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