【问题标题】:Can I Flush the Buffer Early Using ASP.NET?我可以使用 ASP.NET 提前刷新缓冲区吗?
【发布时间】:2016-05-04 13:28:07
【问题描述】:

来自 Yahoo 的Best Practices for Speeing Up Your Web Site 包含以下建议:

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

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

例子:

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

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

有没有办法使用 ASP.NET 显式地在头部(或页面的任何其他部分)之后刷新?

【问题讨论】:

    标签: asp.net optimization


    【解决方案1】:

    您应该能够将以下内容放在页面头部结尾和正文开头之间:

    <% Response.Flush(); %>
    

    但是,如果您使用的是脚本管理器或任何其他类型的控件,这些控件将在 html 的 head 部分中注册自己以进行输出,请注意此处。

    【讨论】:

    • 是的...一旦响应开始被刷新,它将阻止许多想要写入响应对象的东西。
    【解决方案2】:

    您可能还希望在页面顶部的 @Page 标记中显式设置 Buffer=true 以避免 Response.Flush() 引发错误。

    【讨论】:

      猜你喜欢
      • 2022-04-18
      • 1970-01-01
      • 1970-01-01
      • 2018-07-11
      • 1970-01-01
      • 1970-01-01
      • 2020-02-08
      • 1970-01-01
      • 2015-08-10
      相关资源
      最近更新 更多