问题 我可以早期使用ASP.NET刷新缓冲区吗?


加速网站的最佳实践 来自雅虎包括以下建议:

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

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

例:

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

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

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


10079
2018-03-24 19:12


起源



答案:


您应该能够在页面末尾和body语句的开头之间将以下内容放在页面中:

<% Response.Flush(); %>

但是,如果您正在使用脚本管理器或任何其他类型的控件将在html的head部分中注册自己的输出,请小心。


10
2018-03-24 19:15



是的...一旦响应开始被刷新,它将阻止许多想要写入响应对象的事情。 - Jeff Martin


答案:


您应该能够在页面末尾和body语句的开头之间将以下内容放在页面中:

<% Response.Flush(); %>

但是,如果您正在使用脚本管理器或任何其他类型的控件将在html的head部分中注册自己的输出,请小心。


10
2018-03-24 19:15



是的...一旦响应开始被刷新,它将阻止许多想要写入响应对象的事情。 - Jeff Martin


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


3
2018-03-24 19:22