14.1 schedules:cron 触发函数
3月前我想做个"每天凌晨清理一次临时数据"的活。以前得养个 cron 服务器。现在 Makers 的 schedules 直接在 edgeone.json 里配:
{
"schedules": [
{
"name": "daily-cleanup",
"cron": "0 2 * * *",
"path": "/api/cron/cleanup",
"timezone": "Asia/Shanghai"
}
]
}
cron 是标准 5 段(分 时 日 月 周),不支持秒级。timezone 用 IANA 时区,不填就取构建机时区——跨时区团队务必显式写,不然构建机在美国,任务半夜跑你国内白天。每次部署平台自动比对新配置,移除的任务会自动停。
14.2 cloudFunctions 微调
函数不止能写,还能调:
{
"cloudFunctions": {
"nodejs": {
"maxDuration": 60,
"includeFiles": ["assets/**", "!assets/**/*.tmp"],
"externalNodeModules": ["svg-captcha"]
},
"mainlandRegions": ["ap-beijing"],
"overseasRegions": ["ap-tokyo"]
}
}
| 配置 | 作用 | 标叔的结论 |
|---|---|---|
| maxDuration | 单次最长 10-120s,默认 30s | 重活调大 |
| includeFiles | 把文件打进产物让函数读 | 读文件必配 |
| externalNodeModules | 含原生模块的依赖 | 编译型依赖必配 |
| mainland/overseasRegions | 指定部署地域 | 国内/海外分别定 |
警告:
includeFiles用相对路径(别以./或/开头),支持 glob。函数里用相对路径readFileSync('assets/your-file.png')读取。我第一次忘了配,部署后读不到文件,排查半天。
14.3 组合实战:geo + KV + 缓存的"访问画像" API
把前面学的串起来。一个边缘函数,记录每个访客的地区和累计访问数,并加缓存减轻 KV 压力:
// functions/api/profile.js
export async function onRequest({ request, env }) {
const geo = request.eo.geo;
const region = geo.country || 'unknown';
let n = Number(await my_kv.get(`visits:${region}`)) || 0;
n += 1;
await my_kv.put(`visits:${region}`, String(n));
return new Response(JSON.stringify({ region, visits: n }), {
headers: {
'content-type': 'application/json; charset=UTF-8',
'Cache-Control': 'max-age=60',
},
});
}
边缘函数就近算、KV 存状态、Cache-Control 兜底——三件事一次讲完。
标叔的结论:进阶篇学的不是"更多功能",是"把功能拼成工程"。边缘函数管计算、缓存管速度、CLI 管交付、定时任务管自动——你手里这套,已经够做一个正经产品。
14.4 你手里已经是生产级工具箱
到这,从第一个 Agent 到边缘函数、缓存、流水线、定时任务,链路通了。平台把脏活接了,你只写业务。
附录里我整理了环境变量速查表、edgeone.json 字段清单和常见报错,需要时翻一下。去把你的想法做成能自动跑的服务吧。接下来,Part 5 我们换到实战模板视角——用 8 个真实案例,看别人怎么把 Makers 的 Agent 能力直接做成产品。