链接第一次访问总是很慢,是IIS的设置问题吗?

brucenan999 2008-09-19 09:55:32
做了一个小的应用,服务器根据客户端的URL请求,生成一个EXCEL文件,然后客户端打开这个远程的EXCEL文件.
问题是有的时候访问打开EXCEL文件会很慢(这种情况一般发生在很久没有请求后的第一次请求), 要等半分钟左右才有结果,一旦打开之后,速度就会很快,因为是内网,所以正常时间1S不到.

工作流程:
IE----URL------>IIS
IIS------------>生成EXCEL文件-----返回URL------>IE
IE启动本地的EXCEL.EXE, 把URL做为参数, 这样打开远程的EXCEL文件.


我分析了一下原因:
1. 服务端没有发生什么变动,应该没有预编译的操作.(不知是否正确?)
2. IIS的设置,比如recycle working process, 以及working process idle, 从我的理解,woring process idle会有影响,默认值是20分钟. 一但20分钟内没有请求,IIS会把这个website的进程关了,等下一个请求来的时候,再重新打开,这应该会耽误些时间.但是我把这个功能禁掉了,仍然有这种等待的情况发生,不知为什么?

请高手们帮我分析分析..

...全文
1023 28 打赏 收藏 转发到动态 举报
写回复
用AI写文章
28 条回复
切换为时间正序
请发表友善的回复…
发表回复
提阿菲罗 2011-03-03
  • 打赏
  • 举报
回复
楼主怎么解决的啊
提阿菲罗 2011-03-03
  • 打赏
  • 举报
回复
同样的问题
brucenan999 2008-09-20
  • 打赏
  • 举报
回复
To jaykon:
我一共就一个页面,你说要用什么缓存呢?而且文件又没有变化,何来的重新编译?

To mystudy2000:
你说的长时间不访问网站,网站自已会停下来,这是在IIS里哪里配置的?我已经取消了IIS里关于进程IDLE的功能,不知道还有什么别的地方有相关的配置?



antiking 2008-09-19
  • 打赏
  • 举报
回复
慢有多慢呀!
brucenan999 2008-09-19
  • 打赏
  • 举报
回复
没人回答吗?
brucenan999 2008-09-19
  • 打赏
  • 举报
回复
这不是缓存的问题,而且也不是编译的问题.应该程序根本没有动过,如果布署后第一次慢是正常的,但是以后也会出现慢的情况又怎么解释呢?

而且如果不遇到这种很慢的请求,它的速度相当快,几乎没有等待.应该不需要考虑缓存.
caofan520 2008-09-19
  • 打赏
  • 举报
回复
正常

好的服务器就不会出现这处情况
zpcoder 2008-09-19
  • 打赏
  • 举报
回复


这是正常的,第一次运行要编译生成,所以慢一点,这理所当然.以后就好了.

你要在你的程序多做一个"缓存" 的事 和 应用一些提高性,减少开销的 效果就好很多了.
lovehongyun 2008-09-19
  • 打赏
  • 举报
回复
客户端的原因.

他要加载,要打开..
raybvb09 2008-09-19
  • 打赏
  • 举报
回复
俺觉着这是windows的问题
brucenan999 2008-09-19
  • 打赏
  • 举报
回复
第一次慢不是说第一次布署之后,而是一段时间不用,某天突然一请求,就会很慢
brucenan999 2008-09-19
  • 打赏
  • 举报
回复
是在IE里直接打开的.其实是个JAVA的APPLET,就是打开本地的EXCEL.EXE 把URL当做参数.

客户那有什么原因呢?

我这边也重现过这个问题.

不过不是很容易重现.

billclinton8 2008-09-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 JeffChung 的回复:]
好像.net的都是第一次运行很慢,呵呵
[/Quote]
只要运行一次就快了
JeffChung 2008-09-19
  • 打赏
  • 举报
回复
好像.net的都是第一次运行很慢,呵呵
greystar 2008-09-19
  • 打赏
  • 举报
回复
估计是你客户的原因.你是直接在IE里打开的吧.
刘建 2008-09-19
  • 打赏
  • 举报
回复
第一次运行的时候,是要把iis下的虚拟空间下的bin里要运行的dll 动态编译,
然后copy到
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files

这个时间比较慢。
mystudy2000 2008-09-19
  • 打赏
  • 举报
回复
应该是编译的原因。asp.net的网站是用第一个用户的第一个请求触发网站程序的起动。所以刚启动的网站程序要经过编译处理再响应用户请求。如果长时间不访问网站,网站程序会自己停下来。就像你不设计退出,网站也要自动将那些长时间不请求的连接断开。实际上页面写什么内容都会等这么一会儿的,要是想快,你可以先放一个静态的html,再在这个页上放一个你真正要请求的那个页的链接,这样也许会好一些。
hornbills 2008-09-19
  • 打赏
  • 举报
回复
客户端内存太小,第一次需要加载office组件,第二次打开就会快的多

另外是否编译上的问题,我倒是觉得可能性不大
jaykon 2008-09-19
  • 打赏
  • 举报
回复
为什么你一口咬定不是缓存和编译的问题呢?

我觉得恰好是这个问题redirect到一个excel文件上,缓存和编译是整个程序的,不单只那一页吧。
行者无疆-Kevin 2008-09-19
  • 打赏
  • 举报
回复
第一次访问需要加载很多东西,中间有个预编译的过程.

可以这样解决:
你把网页缓存到服务器,每个人访问时访问的都是同一个画面的样式.这样就少了一步解析的过程.
坏处:每个人第一次打开的页面都一样.
加载更多回复(8)

62,046

社区成员

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

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

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

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