【发布时间】:2013-02-12 00:28:05
【问题描述】:
我有一个在 windows server 2008 r2 上运行的 Web 应用程序。其中一个页面在首次加载时处理时间过长。大约需要 15 秒,之后几乎是瞬间。发生的情况是 w3wp.exe 进程在这段时间内从 200 MB 以下的 RAM 跳转到 700 MB 的 RAM。没关系,页面很大,需要这么多内存。在这 15 秒之后,它会切换回大约 200 MB 的 RAM,如果有人访问该页面,它几乎会立即呈现。无论是谁请求它,它都是第一次呈现。现在,经过一段时间(如果不是几十分钟的话,几分钟),当有人再次请求该页面时,它会做同样的事情 - 处理 15 秒并跳转到 700 MB 的 RAM。
我想以某种方式保留 700 MB 的缓存,这样它就不会过期。即使在它回落到 200 MB 的 RAM 之后,页面也会立即加载,但我的猜测是,这就是为什么在较长一段时间后它“过期”并且必须再次呈现它的原因。我已经阅读了@outputcache,但我不确定这是我需要的。还有many types of caching。有人能指出我正确的方向吗?我不担心内存消耗或其他任何事情,我只是不希望用户等待 15 秒来加载它,即使它不经常发生。谢谢!
PS:在 ASP.NET 4.0 下用 C# 编写的应用程序
【问题讨论】:
-
可能不是缓存的问题。这可能是页面加载事件代码中的问题。请检查页面加载事件。你有没有在你的页面中使用任何线程?
-
我猜不是,我不确定你的意思。你能给我一个小例子吗?谢谢!
-
在页面加载事件 protected void Page_Load(object sender, EventArgs e) { } 执行代码花费了太多时间。这意味着在页面加载时有很多代码要在服务器中执行。您的页面 laod 事件中是否有任何 stsrem.threading.thread 方法?
-
感谢您的回复,不,我根本没有使用过 system.threading(如果这就是您要写的)。你认为这会解决第一次延迟的问题吗?服务器有 2 个 3.2 ghz 的核心。
-
我的意思不是线程方法。您是否有任何类似于页面加载事件上的高时间说服代码的代码。您可以在页面加载事件中发布代码吗?
标签: asp.net .net caching memory