函数计算有冷启动的问题,如果启用VPC,还有VPC的启动时间,为了避免冷启动问题,可以通过预热程序来避免函数实例被销毁。此预热程序示例使用Cloudflare Worker,正好同时用预热程序支持Wordpress的定时任务。
const sites = [
{
url: 'https://www.dnote.cn/wp-cron.php',
headers: {
'referer': 'https://www.dnote.cn/'
},
timeout: 30000
}
];
async function sendRequest() {
for (let site of sites) {
const options = {}
// 请求头
if (site.headers !== undefined) {
options.headers = site.headers
}
// 超时时间
let id
if (site.timeout > 0) {
const controller = new AbortController()
id = setTimeout(() => controller.abort(), site.timeout)
options.signal = controller.signal
}
const res = await fetch(site.url, options)
// 清理超时定时器
if (id !== undefined) {
clearTimeout(id)
}
console.log(site.url, '->', res.status);
}
}
export default {
async scheduled (event, env, ctx) {
ctx.waitUntil(sendRequest());
}
};