当与大型 Web 应用程序一起使用时,您遇到了 ASP.NET 的一个缺点。
DotNetNuke 有许多重要的 DLL 和 VB 文件,如果您所做的只是更改一个 DLL,它们都必须重新处理。如果您的 bin 中有 50 个模块 DLL,则所有 50 个模块 DLL 将在您的下一个应用程序请求时由 ASP.Net 重新处理。
这是我的建议:
将以下文件夹连接到源代码管理(不是整个 DNN 文件夹):
- bin(我建议忽略所有 DNN DLL,以便升级更顺畅)
- Portals_default\Skins
- Portals_default\Containers
- js
- DesktopModules(忽略管理员或任何内置模块)
- 图像(如果您愿意,可以忽略核心 DNN 图像,或者您自己的任何笨重图像文件夹,例如数千张客户照片)
- (可选)CompanyName\(您可能希望将其他需要对 DLL 的相对访问权限的 .NET 项目保留在 bin 文件夹中)
当您的一位开发人员需要重复编译/页面加载时,他将通过消除 bin 文件夹中尽可能多的 DLL 获得最大收益。如果可以的话,它也将有助于使用准系统皮肤进行测试(它们很容易制作)。
准系统皮肤(最多应使用 1 或 2 个皮肤对象)和绝对最少的 DLL(DNN 核心 + 您自己的最低限度)将为您提供最佳的开发速度。
当您的开发人员完成一个模块的重点开发后,他可以更新他从源代码管理中删除项目的那些文件夹(此处为 svn),在完整的 DLL/Skin 集的上下文中完成对他的代码的测试,他将被设置。
有时这是值得的麻烦。我无法让您将 ASP.NET 重新处理时间缩短到几秒钟,但我可以让您缩短到 10-15 秒。(假设您在 SSD 上运行)
就生产重启而言,请确保您的应用程序池在非工作时间回收。
我研究了多核设置是否可以以某种方式减少重新处理时间,但没有任何运气(我有一个关于服务器故障的悬而未决的问题)