2013-02-26 112 views
0

我有一个在Windows Server 2008 R2上运行的Web应用程序。其中一个页面在第一次加载时需要很长时间才能处理。大约需要15秒,之后几乎是瞬间的。会发生的情况是,w3wp.exe进程在这段时间内从200 MB以下的RAM跳到700 MB的RAM。这很好,页面很大,需要大量的内存。在这15秒后,它会切换回大约200 MB的RAM,如果有人访问该页面,它几乎可以立即呈现。它只是第一次渲染而不管谁请求它。现在经过一段时间(如果不是几十分钟),当有人再次请求页面时,它会执行相同的操作 - 处理15秒,并跳至700 MB的RAM。ASP.NET服务器缓存

我想以某种方式保存700 MB的缓存,所以它不会过期。即使在回落到200 MB的RAM后,页面也会立即加载,但我的猜测是,这就是为什么在较长一段时间后它会“过期”并需要再次渲染。我读过@outputcache,但我不确定这是我需要的。并有many types of caching。有人能指出我正确的方向吗?我不担心内存消耗或其他任何事情,我只是不希望用户等待15秒来加载它,即使它不经常发生。谢谢!

PS:ASP.NET 4.0

+0

也未必缓存的问题。这可能是页面加载事件代码中的错误。请检查页面加载事件。你有没有在你的页面中使用任何线程? – 2013-02-26 14:05:18

+0

我想不是,我不确定你的意思。你能给我一个小例子吗?谢谢! – osmiumbin 2013-02-26 14:06:52

+0

页面加载事件protected void Page_Load(object sender,EventArgs e) { }执行代码需要太多时间。这意味着在页面加载中有很多代码要在服务器中执行。你的页面laod事件中是否有任何stsrem.threading.thread方法? – 2013-02-26 14:12:40

回答

1

下用C#编写的应用程序您的网页被编译的第一次,它是在应用程序池(http://msdn.microsoft.com/en-us/library/ms366723(v=vs.100).aspx)开始后调用。

默认的超时的iddle应用程序池的自己关闭前20分钟:http://technet.microsoft.com/en-us/library/cc771956(v=ws.10).aspx

如果应用程序池关闭后一个新的请求时,该应用程序池需要重新启动,并有再次编译您的页面。

除了提高缓存在您的应用程序,你可以做两件事情:

+0

是的,你是对的,这是有道理的。我会看看我能做些什么。 – osmiumbin 2013-02-26 14:40:18