代码之家  ›  专栏  ›  技术社区  ›  Ian Suttle

我可以使用ASP.NET提前刷新缓冲区吗?

  •  11
  • Ian Suttle  · 技术社区  · 16 年前

    Best Practices for Speeing Up Your Web Site 雅虎提供以下建议:

    当用户请求一个页面时,后端服务器可能需要200到500毫秒的时间来缝合HTML页面。在此期间,浏览器在等待数据到达时处于空闲状态。在PHP中,有函数flush()。它允许您将部分就绪的HTML响应发送到浏览器,以便在后端忙于处理HTML页面的其余部分时,浏览器可以开始获取组件。其好处主要体现在繁忙的后端或较轻的前端。

    一个考虑刷新的好地方是在头部之后,因为头部的HTML通常更容易生成,它允许您包含任何CSS和JavaScript文件,以便浏览器在后端仍在处理时开始并行提取。

    例子:

    ... <!-- css, js -->
    </head>
    <?php flush(); ?>
    <body>
    ... <!-- content -->
    

    注意,这里出现的刷新点是在头标记被写入之后。这很有意义,因此浏览器可以在呈现和服务页面的其余部分时开始加载图像和脚本。

    是否有一种方法可以在头(或页面的任何其他部分)显式使用ASP.NET后刷新?

    2 回复  |  直到 16 年前
        1
  •  10
  •   casperOne    16 年前

    您应该能够将以下内容放在您的页面中,位于头部的末尾和正文语句的开头之间:

    <% Response.Flush(); %>
    

    但是,如果您使用的是脚本管理器或任何其他类型的控件,这些控件将在HTML的头部分注册为输出,请在这里小心。

        2
  •  3
  •   javamatte    16 年前

    您可能还需要在页面顶部的@page标记中显式设置buffer=true,以避免response.flush()引发错误。