« google top 10 principle - Google 10大黄金法则 | Main | IPtables 规则错误导致DNS查询失败之解决办法 »

版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明。
本文网址:http://www.hzqbbc.com/blog/arch/2006/02/server_push_blo.html
 

February 25, 2006

Server Push blocked by Compress - 压缩模式不能实现Server Push

Server Push并不是什么新技术,而是一种老技术。早年Netscape就提出了Server Push的技术,通过HTTP 内容类型 multipart/x-mixed-replace 来标识。

但由于Netscape被迫退出市场后,IE一直没有支持这样的特性,所以想基于真正的Server Push 技术开发web 即时通信软件的梦想一直不能获得完美实现。

目前一般的Server Push实现大多是由一个长效执行的cgi程序,将变更的信息发送到客户端浏览器,此时需要此cgi程序及web server支持unbuffer,即能在任意时刻在与客户端建立的连接这个流中传递信息,并不进行缓冲。这样客户端可以即时收到信息。

过去在DMS(Damail System)中实现的无刷新进度条就是使用类似的技术。

最近重新收拾了一下过去的实现,发现居然不能用了!什么原因?

经过检查和对比,才忽然发现,原来自己的web server 打开了内容压缩(gzip,deflate)的功能,难怪怎么都无法即时获得server端的输出。

由于deflate/gzip输出必须事先获得全部的输出信息,因此web server强制性的等待cgi程序执行完毕之后,才将cgi的输出结果进行压缩,并发送到客户端。

因此客户端将一直处于“阻塞”状态,得不到任何数据。

以后得小心这个问题,或者利用apache的deflate模块里提供的功能,对于特定的后缀才进行压缩,对于cgi程序不压缩。否则Server Push就被Blocked 了 :-)

相关的一些Link:


http://home.netscape.com/assist/net_sites/pushpull.html

Posted by hzqbbc at February 25, 2006 06:37 PM

Comments

高手 想请教你一些问题哦
能不能提供以下联系地址阿

msn 或者 qq

many thanks

Posted by: redsol at April 13, 2006 10:49 AM

有问题就请直接到extmail.org的论坛问吧。或者发邮件:

hzqbbc *A T* hzqbbc [dot] com

Posted by: hzqbbc at April 21, 2006 09:36 PM

seen


签名:My Blog
--------------------------
http://spaces.msn.com/jiangyouxiaozi/

Posted by: poo at May 15, 2006 09:24 PM

Post a comment




Remember Me?

(you may use HTML tags for style)