一个老问题了,如何克服asp。net第一次运行时特别慢的毛病

ddxxyy2002 2008-11-07 05:36:29
一个老问题了,如何克服asp。net第一次运行时特别慢的毛病

第一次访问asp.net站点时,代码需要编译,所以会响应非常慢。由于站点访问量很小,所以经常发生这种响应非常慢的情况。
我初步的解决想法是,在机器上开一个小程序,每隔半小时自动访问站点一次,迫使其提前编译。不知道大家有没有更加优雅的办法?
...全文
440 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
sukney 2009-11-23
  • 打赏
  • 举报
回复
把应用程序连接池里性能 空闲超时 的勾去掉就行了
bingdian37 2008-11-07
  • 打赏
  • 举报
回复
楼主的问题,归根揭底,不是第一次运行慢的问题(因为第一次启动肯定慢)

是如何不让应用程序在空闲的时候被回收的问题

IIS的一个好特性,在这里却成了问题
bingdian37 2008-11-07
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 yagebu1983 的回复:]
周公说的没错!!
[/Quote]

存在应用程序池回收的问题

老大
yagebu1983 2008-11-07
  • 打赏
  • 举报
回复
周公说的没错!!
bingdian37 2008-11-07
  • 打赏
  • 举报
回复
对,上上楼的代码还缺一段,补上,就基本完整了,呵呵

凑合看吧,我自己用的


public static void Start()
{
if (manageThread == null || manageThread.ThreadState == System.Threading.ThreadState.Stopped)
{
try
{
if (System.Web.HttpContext.Current.Request.Url.Authority == "www.test.cn")
host = "http://www.test.cn/rootrefresh.aspx";
else
host = "http://localhost:88/rootrefresh.aspx";

manageThread = new System.Threading.Thread(Main);
manageThread.Name = "管理线程";
manageThread.Start();
}
catch (Exception ex)
{
BL_Error.NewError("主管理线程:" + ex.Message);
}
}
}



bingdian37 2008-11-07
  • 打赏
  • 举报
回复
或者,还有个方法

你在网上各种论坛上有签名图片吧?

把图片放到你自己的服务器上,,,这样每次显示网页的时候,就会访问你的服务器的

如果看看没效果,就改成aspx,然后由aspx返回图片,这样就一定会触发asp.net了

这个省事呵呵,基本不用编程......
bingdian37 2008-11-07
  • 打赏
  • 举报
回复

System.Net.WebRequest request;
while (true)
{
System.Threading.Thread.Sleep(1000*60*5);//每5分钟刷新一次应用程序,防止回收
try
{
request = (System.Net.WebRequest)System.Net.WebRequest.Create(host);
request.GetResponse();
}
catch (Exception ex)
{
BL_Error.NewError("访问服务器发生错误:" + ex.Message);
//注意无论如何也不要抛出异常,捕获异常后,一起继续,这样才能维持刷新
}


host就是要访问的地址了
Liu_Qiang 2008-11-07
  • 打赏
  • 举报
回复
第一次速度会相对慢一些,这是公认的。

如果每次都很慢,那就说明是程序或者其它问题了。

你所说的每半小时访问一次站点是很不可取的做法。
bingdian37 2008-11-07
  • 打赏
  • 举报
回复
有解决方法

就是在你自己的asp.net程序中开线程

每隔一个时间段,自己访问自己一次

楼主所说的情况是应用程序池回收了,呵呵

只要定时访问,只有服务器启动后应用程序第一次访问的时候慢,以后再访问就不会慢了

zlb789 2008-11-07
  • 打赏
  • 举报
回复
自己先全部预编译一次
有个命令
aspnet_compiler 好象是这样 记不住了
liudanking 2008-11-07
  • 打赏
  • 举报
回复
看一些 预编译 相关内容。
赤色火焰 2008-11-07
  • 打赏
  • 举报
回复
我初步的解决想法是,在机器上开一个小程序,每隔半小时自动访问站点一次,迫使其提前编译。不知道大家有没有更加优雅的办法?

你这种想法可不好,这会给服务器带来负担

风骑士之怒 2008-11-07
  • 打赏
  • 举报
回复
学习...
fffff_1982 2008-11-07
  • 打赏
  • 举报
回复
mark
liuwei52 2008-11-07
  • 打赏
  • 举报
回复
学习一下了
syc958 2008-11-07
  • 打赏
  • 举报
回复
网站发布到空间上以后你自己先找开一遍就可以了!
kfps8kfps8 2008-11-07
  • 打赏
  • 举报
回复
mark
周公 2008-11-07
  • 打赏
  • 举报
回复
没有必要。

asp.net页面在第一次请求的时候会被编译成dll文件,由JIT编译执行,因而aspx页面第一次被打开的时候比较慢,而以后执行的时候就会比较快,因为以后执行的时候除非修改了代码否则就没有必要重新生.dll文件了;而asp和php网页每次运行的时候都会被解释执行,因而asp.net网站的运行速度要快。

除非你做了改动,否则以后执行的速度不会慢的。

62,073

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧