ASP Response.Flush()刷新部分数据。

3
我正在开发一个使用ASP服务器端的Web应用程序,并使用iframe进行数据推送。
ASP处理程序会定期向iframe推送一些JavaScript代码:
context.Response.Write("<script language='javascript'>top.update('lala');</script>");
context.Response.Flush();

我的问题是有时候当我接收数据时,无法获取完整的文本。 例如,我会接收到这样的数据:<script language='javascript'>update('lala');</ 不幸的是,如果在接下来的一秒钟内没有其他数据,这将阻止JavaScript代码的执行。

我有一个解决方法是每500毫秒刷新“..........”的线程。(然后我将收到script>......,这将完成我的JavaScript。)

但是,我相信必须有一种方法可以使用Response.Flush()发送整个数据块。 有人知道如何正确使用Response.Flush()吗?

谢谢!

Charles

2个回答

3
我的同事之一找出了问题所在。启用了IIS上的Gzip压缩,这会阻止Web浏览器获取完整的数据块。
解决方案如下:
禁用所有网站的压缩:
对于IIS 5.1,转到“控制面板/管理工具/Internet Information Services”。右键单击“Web Sites”,单击“属性”,然后删除ISAPI筛选器“Compression”。
对于IIS 7,转到“My Documents/IISExpress/config/applicationHost.config”,并更改部分“httpCompression”,以便不为您的特定页面启用压缩。
仅为您的网站禁用压缩:
在应用程序的web.config文件中,在
<system.webServer>
下添加行。
为特定网页或特定请求禁用压缩:
这些好人找到了一种方法: Can gzip compression be selectively disabled in ASP.NET/IIS 7?

2
如果您使用gzip压缩比率高达3,IIS会提供分块页面。而且在gzip比率3和9之间没有显著的差异。请查看IIS压缩比率测试

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接