2009-07-08 52 views
9

我很困惑。我查看了按照我的老板加载“缓慢”的页面调用的轨迹,导致页面部分加载,然后“跳转”到回发上的记忆滚动位置。是什么导致页面渲染缓慢?

我最终发现,使用我的踪迹,我的整个加载从Begin PreInit到End Render花费了1.94秒,其中1.5个花费在Begin PreRender和End PreRender之间。

任何想法可能会导致什么?对于End PreRenderComplete,下一个最大的加载时间是0.14秒。

这个问题是否可以源于我对SQL Server的查询,或者页面上的控件数量过大,即使大多数都是“隐藏”的?

[编辑]看来,当我展示某种形式时,我的页面加载时间很长。我的总体渲染大小为91537字节,其中44483个专用于该特定表单。我的视图状态似乎非常巨大。另外:404的JS文件可以导致这种负载滞后?

[update:]所以我找到了运行时间最长的查询,看起来即使它看起来很笨重,它甚至在页面被加载之前就已经结束运行了。 作为补充信息:我使用了相当多的SqlDataSources来控制整个下拉列表和其他有趣的东西。这是混乱我的应用程序?

+0

在阅读您的更新之后,我仍然认为您需要在探查器中查看此信息以确定。 – 2009-07-09 12:40:26

回答

6

根据我的经验(与您的问题相同),这是90%的SQL问题。

在您正在调用的查询周围添加一些秒表,以查明哪些查询运行缓慢。

渲染asp.net控制不能这么长时间....

4

为了找出瓶颈的原因,你真的应该用ANTS Profiler之类的工具来分析你的代码。

分析器将允许您通过向您显示哪些代码行比其他代码更慢来查明问题区域。

+2

任何我不必花费400美元就可以在此应用程序中找到单个问题?:P – 2009-07-08 12:56:34

+2

我以为你可以通过下载它来试用蚂蚁探查器:)。 同样,您可以下载Visual Studio试用版,并免费提供VS分析器。 – 2009-07-08 13:01:20

+1

我已经使用了蚂蚁探查器以及Visual Studio的性能向导的试用版,并发现它们在许多方面具有可比性。 – 2009-07-08 13:03:36

3

我会用YSlow,以确定其是否从客户端或服务器端的东西。我们有时会将一些定时器添加到某些查询中,然后输出时间在html注释中执行......当然,在测试完成后删除它们。

页面调用托管在外部网站上的任何东西吗?

0

最好的选择是使用Perfomance Wizard in Visual Studio并查看您的页面的调用树。它会给你更多的细节到确切的性能瓶颈。

当页面上声明了太多复杂的控件时,我已经看到了这种类型的性能。尽管它也很容易与SQL相关。要了解确切的情况,您需要查看Call Tree并查明最昂贵的通话。

0

当然,如果是sql相关的,正如很多人所指出的那样,“sql server profiler”是使用的工具(假设您运行的是mssql)。 mysql有“jetprofiler”(.com),我还没有试过。一旦你发现缓慢的查询,这不是一个索引问题。