Node.js Firebase函数存储文件下载链接生成需要时间
从firebase函数上传文件后,我生成了一个签名url,但这需要5秒的时间。我的主要工作在5秒钟内完成,但链接生成增加了更多等待用户的时间 这是我使用的函数: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
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
之外完成
我会尝试使用removedfs.unlinkSync
进行测试,并检查是否有什么执行时间
您也可以使用异步版本的函数,但我认为更清楚的是在外部执行。此代码似乎被同步的
fs.unlinkSync
方法减慢了速度。因此,代码正在等待文件删除(引用和)
根据我的理解,删除上传的文件对于链接生成并不重要,因此不符合功能目的。问题是是否值得等待,我认为这个操作(文件删除)可以在提供链接后调用的函数getSignedUrl
之外完成
我会尝试使用removedfs.unlinkSync
进行测试,并检查是否有什么执行时间
您也可以使用异步版本的函数,但我认为更清楚的是在外部执行。不走运。还有3-5秒的时间。已完全删除文件删除。还是一样。如果我使用emulator,那么时间几乎不到1.5秒,但当我将其部署到云计算时,时间会增加。这是为什么。我提供了2GB的ram,但仍然没有运气。你多久运行一次这个函数?没有运气。还有3-5秒的时间。已完全删除文件删除。还是一样。如果我使用emulator,那么时间几乎不到1.5秒,但当我将其部署到云计算时,时间会增加。为什么呢?我配置了2GB的内存,但还是没有运气。你多久运行一次这个函数?