![]() |
1
Track13 2024-07-10 10:31:42 +08:00
慢,开了代理都慢。
cf workers 好像单次执行时间有点短。 |
2
0o0O0o0O0o 2024-07-10 10:33:29 +08:00 via iPhone
|
![]() |
3
wonderfulcxm 2024-07-10 10:35:50 +08:00 via iPhone
你这个是 ssr 的吗?
seo 怎么样 |
![]() |
4
sparkinglemon 2024-07-10 10:37:41 +08:00
谈不上复杂吧,我自己的静态(next.js ssg)博客在 Pages 上,然后 worker 写了一个接口转发,写了一个检测网站是否在线的 cron (如果 A 云离线了通过修改 DNS 的方式切换到 B 、C )
我自己的理解就是 serverless 还是更适合一些无状态应用,太过复杂就很依赖平台提供的功能(之前 D1 没有的时候用 KV 存储数据要多蹩脚有多蹩脚) |
![]() |
5
jamfer OP @wonderfulcxm ssr 是啥?
@0o0O0o0O0o 这个做的不错,我昨天也看了一些 cf 上的博客项目,大多数是静态的,我更好奇有没有更复杂的动态语言项目部署在 workers 上 @sparkinglemon 嗯确实,我也感觉 serverless 太依赖平台了,给你什么就用什么 |
![]() |
6
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 |
7
woodongwong 2024-07-10 10:53:47 +08:00
我说怎么这么快,图片放在了阿里云
|
![]() |
8
jamfer OP |
![]() |
9
jamfer OP @woodongwong 嗯,图片还没迁到 R2 ,晚点也迁过来
|
![]() |
10
enrolls 2024-07-10 11:17:16 +08:00
这个 cf worker 可多东西玩了,同理所有云上的 lambda 都一样
|
11
cwxiaos 2024-07-10 11:34:05 +08:00 via iPhone
pages 可以做全栈,要依赖 d1 或者 kv,做动态的没啥大问题,
Worker 理论上可以,但静态资源依赖 kv asset 之类的 |
12
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 ) |
![]() |
14
JensenQian 2024-07-10 13:13:16 +08:00 via Android ![]() |
15
asuraa 2024-07-10 16:13:01 +08:00
哎 主要是我不会 css 布局
这玩意好难 |
16
gorvey 2024-07-10 16:33:19 +08:00
https://cloudflare.chuhai.tools/
我估计自己部署的还是少数,大部分都是 clone 个开源项目完事 |
![]() |
17
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 的话,我觉得还不行 |
![]() |
18
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 这玩意主要得顺着思路用,不能用传统的程序逻辑来写 |
19
1rv013c6aiWPGt24 2024-07-10 19:37:16 +08:00 via Android
@codehz rss 订阅推送?老哥能不能给个代码?
|
![]() |
20
codehz 2024-07-10 21:44:47 +08:00
@UncleCAT4 单纯按订阅渠道推送到 tg 群的不同 topic 而已,主要是给我一键离线下载用((至于为啥不直接下载,首先 worker 就不行,其次还想给大家一起用)
|
![]() |
21
codehz 2024-07-10 21:45:11 +08:00
@UncleCAT4 https://github.com/codehz/tganime <- 哦忘记发了
|
22
Yadomin 2024-07-10 22:08:46 +08:00 via Android
Serverless 这种东西看起来美好,但是当请求量上去之后会发现比传统服务器更贵
|
![]() |
23
lisongeee 2024-07-11 00:44:33 +08:00
感觉比较适合反向代理这种无状态但是又不能完全静态的场景
|
![]() |
24
hzcer 2024-07-11 00:59:33 +08:00 via iPhone ![]() 部署了整套后端服务,包括 d1 数据库,kv ,R2 ,webp wasm 转码之类的。成本非常低,免维护,易部署( GitHub Actions 自动部署)。每天大约 100k 请求。
webp 转码,设置最慢压缩,大约消耗 6-10s cpu time ,所以得放在 queue 里,异步处理,不会阻塞主线程。 做了 100% coverage unit test ,依赖自动 merge ,时刻保持依赖最新。 |
![]() |
25
hzcer 2024-07-11 01:03:47 +08:00 via iPhone
但是一开始就要以 serverless 的思路来设计,尤其是数据(因为很多时候是数据没办法无状态),例如用 uuidv4 来确保全球唯一性和无状态性,这样就不需要等待数据库返回主键。包括 cache 的设计,如何保持全球低延迟。
|
![]() |
26
hzcer 2024-07-11 01:06:26 +08:00 via iPhone
有个问题是因为实在太新了,很多 best practice 没有稳定下来,例如 @ByteCat 提到的 Hono ,之前 CF 官方推荐的是 itty-router 现在又变成 Hono 了。包括 test 库也一直在变。
|
![]() |
27
Amose2024 2024-07-11 01:10:37 +08:00
请问博客用的什么文本编辑器?
|
![]() |
28
qweruiop 2024-07-11 05:57:56 +08:00 ![]() serverless 这个东西开始不贵,后期太贵。
2 年前入了 cf worker 的坑,后期一旦上量,每天几千到几万 usd 的跑不掉。 最开始想的是,访问上去了,也不会计较这点调用费。但是当访问上去了,才知道同样的成本,用传统服务器的性能又会比 worker 高。。。 |
![]() |
30
liuliancc 2024-07-11 12:25:19 +08:00
我用 Nextjs 和 Prisma ,Prisma 不支持 edge 运行时,感觉用 workers 会有很多坑,还是在用 Vercel 部署。不过我非常喜欢用 honojs 写后端,然后部署在 workers 上,非常合适
|
![]() |
31
sparkinglemon 2024-07-11 13:57:20 +08:00
@liuliancc prisma 的竞品 drizzle orm 支持 edge 运行时比如 D1 ( https://orm.drizzle.team/docs/get-started-sqlite#cloudflare-d1 )
|