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