将静态 html 文件存储在节点快速服务器上的服务器变量中有什么好处吗?

Is there any advantage in storing static html files in a server variable on a node-express server?

我是 运行 一个使用 express 的小型节点服务器,在某些时候我决定将我的静态 html-内容存储在我的服务器上的变量中,而不是从磁盘提供它们,我想服务器应该以这种方式将它们存储在 RAM 中,从而更快地为它们提供服务。

但是,在寻找有关该主题的可靠信息时,我感到很失望,无法找到与该主题相关的任何信息。因此,我以这种方式征求对该主题的想法(或者甚至是对该主题的良好阅读material)。

最好的, 福赫拉克

示例代码:

const   express = require('express')
    ,   app = express()
    ,   server = require('http').createServer(app)
    ,   server = require('http').createServer(app)
    ,   server_port = 8080
    ,   server_ip_address = 'localhost';

server.listen(server_port, server_ip_address, () => {
    console.log('listening on port '+ server_port);
});

app.use('/index', express.static('/Public/index.html'));

/*** vs ***/

const index = fs.readFileSync('/Public/index.html').toString();

app.get('/index', (req, res, next) => {
    res.status(200).send(index);
});

如果文件很小,为什么不呢?

将文件缓存在变量中以使用内存 io 比 hdd io 更便宜。

但请记住跟踪文件更改并重新阅读它:

const staticFiles = {
  'index': fs.readFileSync(__dirname+'/Public/index.html').toString();
};
fs.watch(__dirname+'/Public/index.html', () => {
  staticFiles.index = fs.readFileSync(__dirname+'/Public/index.html').toString();
});

app.get('/index', (req, res, next) => {
    res.status(200).send(staticFiles.index);
});

但我认为 express-static 中间件已经做到了。

读这个:http://expressjs.com/en/starter/static-files.html and this: https://github.com/expressjs/serve-static/blob/master/index.js

但我没有看到它正在将文件缓存到变量中。



我不关心这个问题,因为我在 nginx 后面使用 nodejs 应用程序,所以所有缓冲和静态文件服务都由 nginx 完成。