如果您只是将“数据”连接到“ write()”,将“关闭”连接到“ end()”,则是一种更好的方法:
// 0.3.x stylefs.createReadStream(filename, { 'bufferSize': 4 * 1024}).pipe(response)// 0.2.x stylesys.pump(fs.createReadStream(filename, { 'bufferSize': 4 * 1024}), response)
“
read.pipe(write)或”
sys.pump(read,write)方法的好处还在于增加了流量控制。因此,如果写入流不能尽快接受数据,它将通知读取流回退,以最大程度地减少缓冲在内存中的数据量。
在
flags:"r"和
mode:0666由事实,这是一个暗示
FileReadStream。该
binary编码已过时-
如果没有指定编码,它会刚刚与原始数据缓冲区的工作。
此外,您还可以添加其他一些功能,使您的文件更加流畅:
- 嗅探
req.headers.range
并查看它是否匹配字符串/bytes=([0-9]+)-([0-9]+)/
。如果是这样,您只想从该起点到终点流。(缺少数字表示0或“结尾”。) - 将stat()调用中的inode和创建时间散列到ETag头中。如果您收到的请求标头具有“ if-none-match”匹配的标头,请发送回
304 Not Modified
。 - 根据stat对象上的日期检查
if-modified-since
标题mtime
。304(如果自提供日期以来未进行过修改)。
另外,通常,如果可以的话,发送
Content-Length标题。(您正在
stat-ing文件,因此您应该拥有此文件。)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)