如何在不导致磁盘读取的情况下提供静态文件?

时间:2016-03-07 12:33:25

标签: javascript node.js express

res.sendFile是使用发送静态文件的推荐方法。但是,据我所知,res.sendFile是在每次请求时从磁盘读取文件,例如

router.get('/', (req, res) => {
    res.sendFile('./guest.js');
});

访问/会在每次请求时读取磁盘。

1 个答案:

答案 0 :(得分:1)

假设确实读取了每个请求(很难确认,因为它可能正在使用一个利用fs.watchfs.stat的聪明缓存来评估是否读取新文件),然后一个简单的解决方案是将文件的内容转换为变量并使用res.rend提供它,例如

const guestScript = fs.readFileSync('./guest.js', 'utf-8');

router.get('/', (req, res) => {
    res
        .set('Content-Type', 'application/javascript')
        .send(guestScript);
});