3

我有一个 MVC3 应用程序,它像通常那样使用视图和控制器。

我还有一个控制器TestController,它从 IIS 7.5 中的虚拟目录设置返回视图。

在视图下的 IIS 中,我添加了虚拟目录Test,该目录指向我的本地磁盘上的一个目录,其中包含我的 cshtml 页面。

在我的第一个请求中,视图的呈现最多需要 20 分钟,但后续请求需要几秒钟。

我本地机器上的实际文件夹包含 1000 个 cshtml 页面 - 这会是一个问题吗?

为什么我的应用程序需要 20 分钟(第一次请求)从虚拟目录呈现视图,而在解决方案本身中呈现视图需要几秒钟?

任何帮助是极大的赞赏。

[进一步更新] - 这发生了很多次,然后就停止了。然后我不得不删除虚拟目录并在 IIS 中重新添加它,它又开始发生了。

我决定运行蚂蚁性能分析器。这是结果(我在等待了将近 30 分钟后停止了它) Ants 性能分析器

我有一种感觉,我们可能会看到一个僵局,但我不知道如何测试它

4

1 回答 1

1

创建我自己的虚拟路径提供程序后,我发现一旦从我的虚拟目录请求一个文件,它就会遍历目录中的每个文件并在每个文件上调用 GetCacheDependency。

我相信 Pranav 上面的解释是正确的,因此是答案,但下面是我采取的方法:

  1. 将我的文件从磁盘移动到沙发底座
  2. 创建我自己的自定义 VirtualPathProvider
  3. 创建我自己的自定义 CacheDependency
  4. 如果文件是虚拟文件,则返回我的自定义 CacheDependecy,否则使用默认值
  5. 使用 MSMQ 使缓存无效
于 2012-06-19T08:49:40.357 回答