Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用nodeJS提高发送静态图像的速度_Javascript_Node.js_Image_Express - Fatal编程技术网

Javascript 使用nodeJS提高发送静态图像的速度

Javascript 使用nodeJS提高发送静态图像的速度,javascript,node.js,image,express,Javascript,Node.js,Image,Express,我有一个典型的客户机/服务器应用程序,我可以将图像发送到服务器,我需要在客户机上使用不同大小的图像 因此,目前我正在使用毕加索和android加载图像,而使用nodeJS,我将图像作为静态文件提供,因为它们保存在静态文件所在的文件夹中 我的问题是:有没有办法提高发送这些静态文件(仅图像)的速度,或者我可以使用当前用于静态文件的代码来减小它们的大小 app.use(express.static(path.join(__dirname, 'public'))); 此时,我从客户机接收到的图像为ba

我有一个典型的客户机/服务器应用程序,我可以将图像发送到服务器,我需要在客户机上使用不同大小的图像

因此,目前我正在使用毕加索和android加载图像,而使用nodeJS,我将图像作为静态文件提供,因为它们保存在静态文件所在的文件夹中

我的问题是:有没有办法提高发送这些静态文件(仅图像)的速度,或者我可以使用当前用于静态文件的代码来减小它们的大小

app.use(express.static(path.join(__dirname, 'public')));
此时,我从客户机接收到的图像为base64,并在服务器上将其转换为如下位图:

var位图=新缓冲区(req.body.base64,'base64')

将位图存储在我用作静态文件夹的公用文件夹中,我不会将图像直接存储在数据库中,因为这是一种不好的做法,我只保存路径,每次我想检索静态文件夹中我知道的图像时,它就在那里

所以每次在我的客户机上,我想检索一个foto,我只需要知道什么是静态路径,没有更多

为了更好地理解,我在这里留下了我保存照片的一个控制器的代码

控制器

sendPicture: function (req, res, next) {
        var plant = null
        if (req.params.id != 0) {
            plant = req.params.id;
        }
        var bitmap = new Buffer(req.body.base64, 'base64');
        var lat = req.body.lat;
        var lon = req.body.lon;
        var alt = req.body.alt;
        var date = req.body.date;
        var flowerName;
        var pathId = shortid.generate();
        var userId = req.userId;

        if (plant != null) {
            Plant.findOne({
                where: { id: req.params.id }
            }).then(function (plant) {
                if (!plant) {
                    return 'not found';
                }
                flowerName = plant.specie;
            }).then(function () {

                var pathToSave = __dirname + "/../public/images/" + flowerName + "/" + pathId + req.params.id + "-" + userId + ".jpg";
                var path = "images/" + flowerName + "/" + pathId + req.params.id + "-" + userId + ".jpg"


                fsPath.writeFile(pathToSave, bitmap, function (err) {
                    if (err) {
                        console.log(err.stack);
                        return err;
                    }
                    Foto.create({
                        image: path,
                        userId: userId,
                        plantId: req.params.id,
                        lat: req.body.lat,
                        lon: req.body.lon,
                        alt: req.body.alt,
                        date: date,
                    }).then(function () {
                        return res.status(200).json({ message: "foto created" });
                    }).catch(function (err) {
                        console.log(err.stack);
                    })

                });
            });
        }

不要使用Express提供静态文件;在它前面放一个反向代理。那么,您可能首先希望生成更优化的图像,但在不知道您是如何做到这一点的情况下,很难给出建议。谢谢您的回答,我更新了我的问题,并提供了更多细节,Nginx是否太复杂,无法与当前解决方案一起使用?