bigpipe的简单php实现:
<!doctype> <html> <head> <meta charset="utf-8" /> <title>php实现BigPipe</title> </head> <style> </style> <body> <div class="wrapper"> <hr> <div class="section" id="con1">内容1,正在加载……</div> <hr> <div class="section" id="con2">内容2,正在加载……</div> <hr> <div class="section" id="con3">内容3,正在加载……</div> <hr> </div> <?php /* * 输出缓存区 */ function flush_now(){ ob_flush(); flush(); } flush_now(); ?> <?php sleep(2);?> <script> document.getElementById("con1").innerHTML="====内容1===="; </script> <?php flush_now()?> <?php sleep(2);?> <script> document.getElementById("con2").innerHTML="====内容2===="; </script> <?php flush_now()?> <?php sleep(2);?> <script> document.getElementById("con3").innerHTML="====内容3===="; </script> <?php flush_now()?> </body> </html> |
最后,别忘了修改php.ini的:
output_buffering=4096
4 Comments
这个可不一样吧。 这只是针对了同一资源啊。
如果推送到对应的js 处理, 就好了。 这个明显太慢。。。
BigPipe解决的是一个页面需要多个ajax请求加载慢,使整体相应变慢的问题,当然是“针对了同一资源”啦,不知道“推送到对应的js 处理”是什么意思?
请教我的为什么无法实现呢,nginx,都是完全准备好数据之后一起输出的,copy你的代码,iorichina@163.com
印象中,需要打开服务器的“keep-alive”,在apache的http.conf里是“KeepAlive On”,你可以找找nginx中的对应配置。另外,别忘了php.ini里的“output_buffering=4096”
—–希望对你有帮助