【问题标题】:ASP Response.Flush() flushes partial dataASP Response.Flush() 刷新部分数据
【发布时间】:2012-06-16 23:36:06
【问题描述】:

我正在开发一个带有 ASP 服务器端的 Web 应用程序,并且我使用 iframe 进行数据推送。

一个 ASP 处理程序每​​隔一段时间将一些 javascript 刷新到 iframe:

context.Response.Write("<script language='javascript'>top.update('lala');</script>");
context.Response.Flush();

我的问题是有时,当我收到数据时,我没有得到全文。 例如我会收到这个:&lt;script language='javascript'&gt;update('lala');&lt;/ 不幸的是,如果在下一秒左右没有其他数据到来,这会阻止 javascript 代码被执行。

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

但是我确信必须有办法让 Response.Flush() 发送整个数据块。 有人知道如何正确使用 Response.Flush() 吗?

谢谢!

查尔斯

【问题讨论】:

    标签: asp.net iis flush


    【解决方案1】:

    我的一位同事发现了问题所在。 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 部分,以便不对您的特定页面启用压缩。

    仅为您的网站禁用压缩:

    在您的应用程序的web.config 文件中,在&lt;system.webServer&gt; 部分下添加&lt;urlCompression doStaticCompression="true" doDynamicCompression="false"/&gt; 行。

    对特定网页或特定请求禁用压缩

    这些好人找到了办法:

    Can gzip compression be selectively disabled in ASP.NET/IIS 7?

    【讨论】:

      【解决方案2】:

      如果您使用高达 3 的 gzip 压缩比,IIS 会提供分块页面。而且gzip比3和9没有显着差异。Look at IIS compression ratio test

      【讨论】:

        猜你喜欢
        • 2016-02-25
        • 1970-01-01
        • 2019-07-20
        • 2012-09-19
        • 1970-01-01
        • 1970-01-01
        • 2014-06-12
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多