【问题标题】:How to serve a static file without causing a disk read?如何在不导致磁盘读取的情况下提供静态文件?
【发布时间】:2016-03-07 12:33:24
【问题描述】:
res.sendFile 是使用express 发送静态文件的推荐方式。但是,据我所知,res.sendFile 在每次请求时都从磁盘读取文件,例如
router.get('/', (req, res) => {
res.sendFile('./guest.js');
});
访问/ 将对每个请求进行磁盘读取。
【问题讨论】:
标签:
express
javascript
node.js
express
【解决方案1】:
假设express 确实读取了每个请求(很难确认,因为它可能使用了一个巧妙的缓存,利用fs.watch 或fs.stat 来评估是否读取新文件),然后简单的解决方案是将文件的内容放入一个变量中并使用res.rend 提供它,例如
const guestScript = fs.readFileSync('./guest.js', 'utf-8');
router.get('/', (req, res) => {
res
.set('Content-Type', 'application/javascript')
.send(guestScript);
});