From ad85e3198060151c5956ce94cd572d0b9d53228a Mon Sep 17 00:00:00 2001 From: DoveBoy <393366046@qq.com> Date: Thu, 19 Nov 2020 17:18:48 +0800 Subject: [PATCH] Update iCloud.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 增加解决云函数热启动问题的说明 --- iCloud.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/iCloud.md b/iCloud.md index 1db8479f..3d140c02 100644 --- a/iCloud.md +++ b/iCloud.md @@ -36,6 +36,8 @@ ```javascript 'use strict'; exports.main_handler = async (event, context, callback) => { + //解决云函数热启动问题 + delete require.cache[require.resolve('./jd_xtg1.js')]; require('./jd_xtg1.js') //这里写你想要的脚本 require('./jd_xtg2.js') //这里写你想要的脚本 require('./jd_xtg3.js') //这里写你想要的脚本 @@ -44,8 +46,7 @@ exports.main_handler = async (event, context, callback) => { ``` 此时,同一时间点下,会同时执行多个脚本,触发器触发后,index.js文件中require()下的所有脚本都会被执行 -**优点**:同一时间下可以同时执行多个脚本,适合脚本种类少的repository,对脚本数量少的repository推荐使用此方案 -**缺点**:多个脚本不同时间点运行无法满足 +**优点**:同一时间下可以同时执行多个脚本,适合脚本种类少的repository,对脚本数量少的repository推荐使用此方案
**缺点**:多个脚本不同时间点运行无法满足 方案二:同一个仓库下不同的时间点,分别执行不同的脚本(类似GitHub Action执行机制) @@ -57,6 +58,8 @@ exports.main_handler = async (event, context, callback) => { 'use strict'; exports.main_handler = async (event, context, callback) => { for (const v of event["Message"].split("\r\n")) { + //解决云函数热启动问题 + delete require.cache[require.resolve(`./${v}.js`)]; console.log(v); require(`./${v}.js`) } @@ -66,14 +69,12 @@ exports.main_handler = async (event, context, callback) => { 此时触发管理按照下图中进行设置,附加信息选择“是”,内容填写需要传递执行的具体脚本文件名,以回车键换行。触发器触发后,附加信息栏内的脚本会被执行,设置多个不同时间点的触发器达到类似GitHub Action的效果 -**优点**:可以满足个性化需求,同一个repository下只需要设置不同的触发器,可以实现不同时间点分别执行不同的脚本 -**缺点**:repository下脚本过多,如果需要设置多个触发器,实现个性化运行效果,由于云函数的限制,最多只能设置10个 +**优点**:可以满足个性化需求,同一个repository下只需要设置不同的触发器,可以实现不同时间点分别执行不同的脚本
**缺点**:repository下脚本过多,如果需要设置多个触发器,实现个性化运行效果,由于云函数的限制,最多只能设置10个 [![B20KxI.png](https://s1.ax1x.com/2020/11/05/B20KxI.png)](https://imgchr.com/i/B20KxI) [![BRCG0H.png](https://s1.ax1x.com/2020/11/05/BRCG0H.png)](https://imgchr.com/i/BRCG0H) -**注意:方案一与方案二不能混合到同一个index.js文件中使用,同一个仓库下,二者只能选择其一。目前由于云函数热启动问题的存在,频繁的触发器启动,虽然日志显示“调用成功”,但实际内容却没有执行,方案一与方案二暂时无法规避此问题,期待之后能解决** - +**注意:方案一与方案二不能混合到同一个index.js文件中使用,同一个仓库下,二者只能选择其一。感谢[issues#115](https://github.com/lxk0301/jd_scripts/issues/115)中的解决方案,目前云函数连续测试已经可以规避热启动问题了** **增加cookie**