我正在开发一个带有 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() 发送整个数据块。
有人知道如何正确使用 Response.Flush() 吗?
谢谢你!
Charles
我的一位同事发现了这个问题。 IIS 上启用了 Gzip 压缩,这会阻止 Web 浏览器获取完整的数据块。
解决方案包括:
禁用所有网站的压缩:
对于 IIS 5.1,请访问Control Panel/Administrative Tools/Internet Information Services
。右键单击Web Sites
, 点击properties
并删除 ISAPI 过滤器Compression
.
对于 IIS 7,请访问My Documents/IISExpress/config/applicationHost.config
并更改部分httpCompression
这样您的特定页面就不会启用压缩。
仅为您的网站禁用压缩:
In the web.config
您的应用程序文件中,添加行<urlCompression doStaticCompression="true" doDynamicCompression="false"/>
在该部分下<system.webServer>
.
禁用特定网页或特定请求的压缩
这些好人找到了一种方法:
可以在 ASP.NET/IIS 7 中选择性地禁用 gzip 压缩吗? https://stackoverflow.com/questions/5656332/can-gzip-compression-be-selectively-disabled-in-asp-net-iis-7?lq=1
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)