我正在尝试使用ssh2-sftp-client模块从 SFTP 服务器渲染图像和 PDF 文件,但是速度很慢,我想知道是否有任何方法可以提高请求的性能。对于大约 168 KB 的文件,它需要超过 1.5 秒,所以它真的很慢。
我目前对性能问题的观察是:
- 目前我正在创建每次连接
- 我使用的服务器很小(Azure Standard B1s(1 vcpu,1 GiB memory))
const ssh2_sftp = require('ssh2-sftp-client');
const router = require('express').Router();
const sftp = new ssh2_sftp();
const FileType = require('file-type');
const sftp_config = {...};
const public_path = /^\/files\/public/
router.get(/^\/image/, async (req, res) => {
if (!req.query.image)
return res.status(422).end();
if (!public_path.test(req.query.image))
return res.status(403).end();
let file;
try {
await sftp.connect(sftp_config);
file = await sftp.get(req.query.image);
} catch (err) {
if(err.toString().includes('No such file'))
return res.status(404).end();
return res.status(502).end();
} finally {
sftp.end();
}
let file_info = await FileType.fromBuffer(file);
res.setHeader('Content-Type', file_info.mime);
res.status(200).end(file);
});
module.exports = router;
我对通过快递将图像发送给客户的方式有疑问,我心里有些东西说这不是正确的方式。而且我正在尝试创建一些池,但我找不到合适的解决方案或至少是单例设计,但我害怕收到太多请求。
我怎么解决这个问题 ?