惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Commits to openclaw:main
Recent Commits to openclaw:main
Cisco Talos Blog
Cisco Talos Blog
S
SegmentFault 最新的问题
大猫的无限游戏
大猫的无限游戏
Project Zero
Project Zero
博客园 - 叶小钗
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
L
Lohrmann on Cybersecurity
C
CXSECURITY Database RSS Feed - CXSecurity.com
V
Vulnerabilities – Threatpost
NISL@THU
NISL@THU
罗磊的独立博客
Hugging Face - Blog
Hugging Face - Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
P
Palo Alto Networks Blog
博客园_首页
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Last Week in AI
Last Week in AI
量子位
Security Latest
Security Latest
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
小众软件
小众软件
博客园 - 【当耐特】
T
Threat Research - Cisco Blogs
The Cloudflare Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
腾讯CDC
宝玉的分享
宝玉的分享
V2EX - 技术
V2EX - 技术
P
Privacy International News Feed
Security Archives - TechRepublic
Security Archives - TechRepublic
Webroot Blog
Webroot Blog
Apple Machine Learning Research
Apple Machine Learning Research
Jina AI
Jina AI
美团技术团队
Hacker News: Ask HN
Hacker News: Ask HN
人人都是产品经理
人人都是产品经理
S
Securelist
S
Security Affairs
WordPress大学
WordPress大学
J
Java Code Geeks
月光博客
月光博客
N
News and Events Feed by Topic
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
阮一峰的网络日志
阮一峰的网络日志
C
CERT Recently Published Vulnerability Notes
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
T
Tailwind CSS Blog

积薪 - 文章

我可能破解了日式拉面的密码 关于本站最近的更新 谣言盛行的时代,你该如何进行信息核查? 近一年来社交网络使用习惯和信息获取方式的一些改变 终于有日本驾照了 台湾观察 我目前使用的AI服务 给博客加了一个搜索功能 你爱的是哪个国? 土地财政的深远影响 我们正在目睹中国文明的孤岛化 原积薪项目将于近日下线 记一次微信群吵架 终于生活在一个气候舒适的地方了 本站已进化到第三代 压垮我的最后一根稻草 不要指望银发经济 为什么是日本 日本首月记录 30岁,我做了个重大决定 什么才是规矩的博客 积薪24年1月更新 尝试留住时间的中年人 ADV换踏板,我不想要远方了 现在房价进行到哪一步了? 回老家远程一周,阳了 连肝两周,积薪8月大更新 一本典型的中式社科书 不太浪漫的田园生活
用Cloudflare Durable Objects实现延迟部署
李大毛 · 2025-11-14 · via 积薪 - 文章

之前做过一个项目,由于是个人网站类型的内容站,就选择了纯静态网站方案,框架是Astro,CMS则采用Sanity,项目部署在Cloudflare Pages。在Sanity进行设置,在有内容变动的时候,触发重新build的webhook。

但是随着内容的增加(某个类型的内容有600多条),build时间也随之增加,每次构建时间甚至有7分钟。而Sanity不支持手动触发webhook,意味着假如你保存了几次文章,就会触发同样多次的build任务。不仅产生大量无用的部署,还极其耗时。如果改了十几篇文章,要看到最新内容就得等1个小时了。

所以今年在做该项目的新功能时,我把延迟构建也考虑了进去。

这个功能很简单:作为webhook中转,收到构建请求后,延迟一段时间再发出,如果一定时间内有新的请求,就重新计时。如果延迟时间是20分钟,无论你改了多少次,只要间隔时间不超过20分钟,实际的构建就只有一次。

由于我的原则是能不跟服务器打交道就不打交道,我想尽量用Cloudflare来实现这一需求。

仅仅用workers是不行的。因为workers无状态的,不能简单的setInterval。经过一番搜索发现Durable Objects可以实现这个需求。

这篇文档中Cloudflare介绍了如何设置Durable Objects在未来某个时间唤醒。

并且还可以通getByName(“scheduler”)使这些触发事件获取到的是同一个实例,新请求会覆盖之前的请求,所以不会产生重复构建。

为了让其更通用,我没有将目标webhook链接写死,而是要求以http头的方式传入,同时也接受延迟时间、验证token。这样就变成了一个多项目共用的通用webhook延迟触发器。

详细代码和使用方法见GitHub