【问题标题】:MVC3 virtual directory view folder is very slowMVC3 虚拟目录查看文件夹很慢
【发布时间】:2012-05-11 10:49:20
【问题描述】:

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

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

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

第一次请求时视图的渲染最多需要 20 分钟,但后续请求需要几秒钟。

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

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

非常感谢任何帮助。

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

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

我感觉我们可能会看到死锁,但我不知道如何测试它

【问题讨论】:

  • 我不知道这个问题是否与IIS有关,但是成千上万的cshtml页面听起来太多了。他们的目的是什么?有这么大的网站吗?可能误用了模板引擎?

标签: asp.net-mvc-3 visual-studio-2010 iis-7.5


【解决方案1】:

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

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

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

【讨论】:

  • 感谢您的突破。
猜你喜欢
  • 2015-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-07
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多