以前用PHP实现过,详情点击这里查看《Nginx中的PHP的缓冲问题》
无论用java、.net还是python都是可以实现bigpipe的…
拿那篇文章中的php显示页做示例:
先输出页面的主体结构:
然后按顺序更新页面的内容:
2s后输出header
4s后输出content
6s后输出footer
从加载到显示共消耗约13s (2 + 4 + 6 + 1 ~= 13s),符合预期结果
这个示例的源码(可复制至本地直接运行):
);
}
setTimeout(out_header, 2 * 1000);
}).listen(3002);
}
setTimeout(out_header, 2 * 1000);
}).listen(3002);
上面是将界面的显示顺序固定写死了,下面将展示一个灵活的动态界面:
先输出6个内容容器,然后构建6个客户端请求,当收到请求数据时直接返回给客户端。如果你需要让界面的内容按顺序显示,只需要修改,返回的delay值,比如按索引值的大小进行修改
true);
params.query.id * 3000; console.log(delay);
这个示例的完整源码:
);
response.end();
}, delay);
}).listen(2000);
上面的示例中并没有像第一个例子一样,显示输出header信息('Transfer-Encoding' : 'chunked'),而浏览器,在response里却看到了,猜测是node.js在输出的时候内部加上去的。
相比php,node.js内部实现并没有“缓冲池”的功能,都是直接输出,很简单吧…
本文参考: