首先,这个问题已被覆盖了几次(我已经完成了我的研究),例如,在SO网页的右侧是一个相关项目的列表...我已经通过它们所有(或我能找到的)。
当我发布预编译的.NET Web应用程序时,第一次加载速度非常慢。
我已经读过这篇文章了,这是我理解的JIT(等等)。
问题是,在主页加载(最多20秒)后,许多其他页面的加载速度非常快。
然而,看起来他们加载的唯一原因是因为资源已被加载(或者他们共享相同的编译dll)。但是,有些页面仍需要很长时间。
这表明JIT可能需要以不同的方式编译不同的页面?如果是这样,并且使用联系表单作为示例(其中Thank You页面需要由JIT编译并且第一次很慢),用户可能会多次点击发送按钮,同时等待页面显示。
加载所有使用不同模型或不同共享HTML内容的页面后,网站会按预期快速加载。我认为这个问题是个常见问题?
请注意,我使用的是.NET 4.0,但是没有数据库,XML文件等。唯一的IO是如果电子邮件没有发送,它会将错误写入日志。
因此,假设我的理解是正确的,那么无需手动浏览网站并加载每个页面的方法是什么?
如果上面的内容有点过于宽泛,那么可以在Visual Studio(2012)的设置/配置或web.config文件中解析(不包括添加compilation debug=false
)吗?
答案 0 :(得分:0)
在这种情况下,有2个问题
根据rene的评论,请查看此http://msdn.microsoft.com/en-us/library/ms972959.aspx ...有用的部分是将以下代码添加到global.asax文件
const string sourceName =“.NET Runtime”; const string serverName =“。”; const string logName =“Application”; const string uriFormat =“\ r \ n \ r \ nURI:{0} \ r \ n \ r \ n”; const string exceptionFormat =“{0}:\”{1} \“\ r \ n {2} \ r \ n \ r \ n”;
void Application_Error(Object sender,EventArgs ea){ StringBuilder message = new StringBuilder();
if (Request != null) {
message.AppendFormat(uriFormat, Request.Path);
}
if (Server != null) {
Exception e;
for (e = Server.GetLastError(); e != null; e = e.InnerException) {
message.AppendFormat(exceptionFormat,
e.GetType().Name,
e.Message,
e.StackTrace);
}
}
if (!EventLog.SourceExists(sourceName)) {
EventLog.CreateEventSource(sourceName, logName);
}
EventLog Log = new EventLog(logName, serverName, sourceName);
Log.WriteEntry(message.ToString(), EventLogEntryType.Error);
//Server.ClearError(); // uncomment this to cancel the error
}
发送电子邮件时服务器最大化!我的代码很好,但是,查看任务计划程序显示它达到了100%的内存......
解决方案是监控第1点显示的错误并进行修复。然后,找出发送电子邮件时服务器被限制的原因!