ASP.NET页面渲染

问题描述:

从服务器到客户端浏览器如何进行ASP.NET页面渲染?问题是,考虑页面有一个页眉和页脚是用户控件,并包含许多服务器控件。ASP.NET页面渲染

ASP.NET是否开始将HTML发送到客户端浏览器,一旦它获得了一些控件被呈现并转换为各自的HTML?还是等待整个页面在服务器上呈现并转换为HTML格式,然后将页面HTML发送回浏览器。

我看到我们网站的“页面标题”显示之前很多,然后页面完全加载需要太多时间。我想澄清一下这个概念,不管它的服务器是花费时间还是客户端脚本,图像等都是罪魁祸首。相应地,我们将开始优化。

具体而言,我有兴趣了解outputstream(在响应对象中)是如何发送到客户端浏览器的?整个页面在outputstream中呈现或者分批发送给客户端(即少量控件呈现并通过outputstream发送到浏览器 - >然后再渲染一些控件等等),输出流是否会被刷新?

对不起,如果我不清楚问题。

我一直在寻找的答案是关于渲染方式,流如何发送到客户端,可能有两种方式,一是直接发送它,在多个块,或缓存和存储,直到整个页面呈现,然后发送给客户端。

我得到的答案:http://www.asp.net/aspnet/overview/aspnet-and-visual-studio-2012/whats-new

“通常情况下ASP.NET缓存响应字节,因为它们是由应用程序创建ASP.NET,然后在最末端执行累计缓冲区的单个发送操作。请求处理

如果缓冲响应很大(例如,将大文件流式传输到客户端),则必须定期调用HttpResponse.Flush向客户端发送缓冲输出,并控制内存使用情况。但是,由于同花顺是一个同步调用,调用反复冲洗仍然消耗了潜在的长期运行的请求的持续时间线程。”

谢谢大家对您的帮助!

调试,你可以打开.NET tracing上看到最新抽空在服务器端方面,

,并使用谷歌Chrome或Firefox的Firebug看什么花时间在客户端上。

用户控件在.aspx页面本身的控件之前呈现。

看看在Page Life Cycle

+0

您也可能会发现这个博客帖子一个很好的指导页面生命周期中的事件序列:http://weblogs.asp.net/jeff/archive/2004/07/04/172683.aspx – 2010-10-13 13:03:40

我相信这是由Response.BufferOutput或类似的东西(手头没有提及),以确定控制是否应立即开始发出HTML,因为它是准备好,或者是否应该存储它在缓冲区中等待,直到一切完成并发送。

Fiddler应该有助于确定瓶颈在哪里,如果您看到页面标题显示,但在我怀疑还有其他文件(图像,JavaScript,css等等)后页面不显示一点),它们阻止页面在浏览器中呈现而不是页面中的html

Page rendering。在这个阶段,查看页面的状态并保存所有的控件。该页面为每个控件调用Render方法,并将渲染的输出写入Page的Response属性的OutputStream类。