异步写入流和响应流

时间:2014-06-02 09:46:59

标签: javascript node.js caching express

我有一些基本代码从缓存中流式传输文件,或者如果不存在则将其下载到缓存中:

if (fs.existsSync('cache/' + req.params.image)) {
  fs.createReadStream('cache/' + req.params.image).pipe(res);
}else{
  request(url).pipe(fs.createWriteStream('cache/' + req.params.image));
}

问题是,为了显示新文件,必须加载两次页面。一次写入缓存并一次从缓存中读取。我想要做的是同时向requestcreateWriteStream管道res,异步(所以不要等待管道关闭事件写入响应)。

1 个答案:

答案 0 :(得分:0)

使用此:

if (fs.existsSync('./' + req.params.image)) {
    fs.createReadStream('./' + req.params.image).pipe(res);
}else{
    var fetch = request(url);
    fetch.pipe(fs.createWriteStream('./' + req.params.image));
    req.pipe(fetch).pipe(res);  
}

希望这可以解决问题......