我有一个asp.net网站,有一个searchResult.aspx,它运行一个sql脚本从MS sql server数据库中检索数据,然后将数据放入HTML格式,该网站已部署在IIS7.5 server中。我实现了静态和动态压缩,这意味着我所有的js、css和aspx页面在呈现到浏览器之前都经过了压缩。
不幸的是,searchResult.aspx的返回速度很慢,如果搜索一个大单词,比如传记,平均需要10秒以上才能返回。我用firebug Net来跟踪它,阻塞、DNS查找、连接和发送都不超过10ms,但等待需要10秒以上。因此,我在函数Page_Load(object sender,EventArgs e)的开头和结尾以及HTML主体元素的开头和末尾添加了一些代码,如下所示:
protected Stopwatch stopwatch = new Stopwatch();
protected void Page_Load(object sender, EventArgs e)
{
stopwatch.Start();
....
stopwatch.Stop();
timeForSearch = stopwatch.Elapsed.Milliseconds;
}
<body>
<%
stopwatch.Reset();
stopwatch.Start();
%>
....
<%stopwatch.Stop();%>
<%=timeForSearch%>+<%=stopwatch.Elapsed.Milliseconds%>=<%=stopwatch.Elapsed.Milliseconds + timeForSearch%>
好的,通常搜索的时间和填充aspx页面的时间总共是1秒,但为什么页面加载需要10秒以上,任何帮助都将不胜感激。
感谢您的回复,aspx页面已经gzip到8.2KB.不是一个大文件
尝试将@Page指令的Trace属性设置为true。
<%@ Page ... Trace="true" %>
在"跟踪信息"部分,您将确定哪个页面生命周期事件需要更多的时间来执行,并可能帮助您进行调试。
您正在使用母版页吗?你的页面上有任何用户控件吗?用户控制事件发生在其父级的事件之后。即,UserControl.Init发生在Page.Init之后(但在Page.Load之前),UserControl.Load发生在Page.LLoad.之后
如果是这样,您可能需要调查这些控件中的Page_Load。
我想也许我修复了它,我禁用了IIS日志,然后搜索页面可以在3到5秒内加载,这似乎改进了很多。但我仍然认为禁用IIS日志是一个不错的选择。