【问题标题】:How to serve a static file without causing a disk read?如何在不导致磁盘读取的情况下提供静态文件?
【发布时间】:2016-03-07 12:33:24
【问题描述】:

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

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

访问/ 将对每个请求进行磁盘读取。

【问题讨论】:

    标签: express javascript node.js express


    【解决方案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);
    });
    

    【讨论】:

    • res.sendFile does read 每次调用的文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-08
    • 1970-01-01
    • 2022-06-29
    相关资源
    最近更新 更多