我正在开发一个带有 ASP 服务器端的 Web 应用程序,并使用 iframe 进行数据推送。
ASP 处理程序每隔一段时间就会将一些 javascript 刷新到 iframe:
context.Response.Write("<script language='javascript'>top.update('lala');</script>");
context.Response.Flush();
我的问题是,有时,当我收到数据时,我没有得到全文。
例如我会收到这个:<script language='javascript'>update('lala');</
不幸的是,如果下一秒左右没有其他数据到来,这会阻止 JavaScript 代码的执行。
我的一个解决方法是每 500 毫秒刷新一次线程“............”。 (然后我将收到 script>......
这将完成我的 javascript。)
但是我确信一定有一种方法可以让 Response.Flush() 发送整个数据 block 。 有人知道如何正确使用 Response.Flush() 吗?
谢谢!
查尔斯
最佳答案
我的一位同事解决了这个问题。 IIS 上启用了 Gzip 压缩,这会阻止 Web 浏览器获取完整的数据 block 。
解决方案包括:
禁用所有网站的压缩:
对于 IIS 5.1,请转到 Control Panel/Administrative Tools/Internet Information Services
。右键单击Web Sites
,点击properties
并删除 ISAPI 过滤器 Compression
.
对于 IIS 7,请转到 My Documents/IISExpress/config/applicationHost.config
并更改部分 httpCompression
这样您的特定页面就不会启用压缩。
仅针对您的网站禁用压缩:
在 web.config
在您的应用程序文件中,添加行 <urlCompression doStaticCompression="true" doDynamicCompression="false"/>
在<system.webServer>
部分下.
对特定网页或特定请求禁用压缩
这些好人找到了一种方法:
Can gzip compression be selectively disabled in ASP.NET/IIS 7?
关于asp.net - ASP Response.Flush() 刷新部分数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11024580/