好的,假设 HttpRuntime.Cache 是您从 ASP.Net 使用的唯一东西:
来自 MSDN 的 HttpRuntime 的类描述:
为当前应用程序提供一组 ASP.NET 运行时服务。
因此,在 System.web.dll 中存在 Web 服务器的一小部分,这是访问它的一个主要 API。第一次调用 System.web.dll 时,必须初始化一些东西,这需要一些时间(尽管几分钟是令人惊讶的,10 - 20 秒似乎更有可能)。
您可以尝试的一件事是在子线程中初始化:
volatile bool isCacheReady = false;
Cache cache = null;
System.Threading.Thread t1 = new System.Threading.Thread(delegate() {
cache = HttpRuntime.Cache;
isCacheReady = true;
});
t1.Start();
// periodically check if cache is available yet (not here in this thread though):
if( isCacheReady )
{
// do something with cache
}
当然,这仍然意味着您的应用程序在这 2-3 分钟内不会有缓存,但至少它不应该阻止启动。(而且我应该看得更深,因为 2-3 分钟似乎太长了,应该有一种方法可以加快速度或使用其他开销较小的缓存工具)