0

我正在尝试使用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;

我对通过快递将图像发送给客户的方式有疑问,我心里有些东西说这不是正确的方式。而且我正在尝试创建一些池,但我找不到合适的解决方案或至少是单例设计,但我害怕收到太多请求。

我怎么解决这个问题 ?

4

0 回答 0