Node.js Firebase函数存储文件下载链接生成需要时间

Node.js Firebase函数存储文件下载链接生成需要时间,node.js,firebase,google-cloud-functions,google-cloud-storage,Node.js,Firebase,Google Cloud Functions,Google Cloud Storage,从firebase函数上传文件后,我生成了一个签名url,但这需要5秒的时间。我的主要工作在5秒钟内完成,但链接生成增加了更多等待用户的时间 这是我使用的函数: function getSignedUrl(file) { console.time('URLGenerated '); /** * Handle url generation url to properly handle user veiws * Crete catch error to see i

从firebase函数上传文件后,我生成了一个签名url,但这需要5秒的时间。我的主要工作在5秒钟内完成,但链接生成增加了更多等待用户的时间

这是我使用的函数:

function getSignedUrl(file) {
    console.time('URLGenerated ');
    /**
     * Handle url generation url to properly handle user veiws
     * Crete catch error to see if it is logged properly
     */
    let options = { action: 'read', expires: Date.now() + 5 * 60 * 1000 }; // 5min Expiration Time
    let bucketFileName = path.join(crypto.randomBytes(12).toString('hex'), path.basename(file));

    return bucket.upload(file, { destination: `public/${bucketFileName}` })
        .then(() => {
            return bucket.file(`public/${bucketFileName}`).getSignedUrl(options)
                .then((urls) => {
                    fs.unlinkSync(file);
                    console.timeEnd('URLGenerated ');
                    return urls[0];
                })
                .catch((e) => {
                    console.log('Link Generation Error' + e);
                });
        }).catch((e) => console.log(e));
} 
文件大小约为200-350 KB

上一代花了3.5秒,这很关键


发生什么事了?如何减少时间?

这段代码似乎被同步的
fs.unlinkSync
方法减慢了速度。因此,代码正在等待文件删除(引用和)

根据我的理解,删除上传的文件对于链接生成并不重要,因此不符合功能目的。问题是是否值得等待,我认为这个操作(文件删除)可以在提供链接后调用的函数
getSignedUrl
之外完成

我会尝试使用removed
fs.unlinkSync
进行测试,并检查是否有什么执行时间


您也可以使用异步版本的函数,但我认为更清楚的是在外部执行。

此代码似乎被同步的
fs.unlinkSync
方法减慢了速度。因此,代码正在等待文件删除(引用和)

根据我的理解,删除上传的文件对于链接生成并不重要,因此不符合功能目的。问题是是否值得等待,我认为这个操作(文件删除)可以在提供链接后调用的函数
getSignedUrl
之外完成

我会尝试使用removed
fs.unlinkSync
进行测试,并检查是否有什么执行时间


您也可以使用异步版本的函数,但我认为更清楚的是在外部执行。

不走运。还有3-5秒的时间。已完全删除文件删除。还是一样。如果我使用emulator,那么时间几乎不到1.5秒,但当我将其部署到云计算时,时间会增加。这是为什么。我提供了2GB的ram,但仍然没有运气。你多久运行一次这个函数?没有运气。还有3-5秒的时间。已完全删除文件删除。还是一样。如果我使用emulator,那么时间几乎不到1.5秒,但当我将其部署到云计算时,时间会增加。为什么呢?我配置了2GB的内存,但还是没有运气。你多久运行一次这个函数?