您对如何加快预编译Kentico网站有任何建议吗? AKA:aspnet_compiler非常慢

时间:2014-09-19 12:53:06

标签: asp.net kentico

我有一个Kentico 6网站,我们通过预编译挤出了更好的性能。我们有一个Team City持续集成(CI)服务器,可以在登录到subversion存储库时自动运行构建。

然而,构建需要40分钟!在aspnet_compiler步骤中大约需要33分钟!这是一个相当长的时间,建设应该不到10分钟。我已经完成了一些各种性能改进,例如将asp.temp文件移动到快速SSD。在aspnet_compiler步骤中,服务器使用的CPU,磁盘和RAM非常少。 CPU的使用似乎平均约为1%!在研究aspnet_compiler的过程中,我发现很多网页都在抱怨速度,但是微软却对此大加沉默。

https://aspnet.uservoice.com/forums/41199-general-asp-net/suggestions/4417181-speed-up-the-aspnet-compiler http://programminglife.wordpress.com/2009/04/16/aspnet_compiler-compilation-speed-part-1/

我得出(或许是错误的)结论,如果我不能加速aspnet_compiler,那么也许我可以减少它的工作量。由于Kentico在项目中有很多控制权,是否可以通过删除无关控制来节省任何费用?即:如果我为一个单页的项目运行aspnet_compiler,那就很快。

我还考虑过将cmsdesk作为一个单独的应用程序,只需要在应用新的修补程序后进行编译。

回顾一下:我的两个问题是:#1 - 我可以以某种方式加速aspnet_compiler吗? #2 - 如果我不能,那么我猜我可以减少它的工作量。

关于#1,也许我可以进行渐进式编译,这样我只预编译自上次构建以来已更改的文件?我还没有找到关于这样做的很多信息;关于这个主题,StackOverflow上有一些未解答的问题 - 例如:aspnet_compiler incremental precompile Incremental Build aspnet_compiler

仅供参考 - 对于那些不熟悉Kentico CMS的人来说,它是一个网站项目,有很多控件 - 可能有数百个。

有什么想法吗?

PS - 我在Kentico论坛上有回复:http://devnet.kentico.com/questions/do-you-have-any-suggestions-on-how-to-speed-up-precompiling-a-kentico-site-aka-the-aspnet_compiler-is-really-slow

2 个答案:

答案 0 :(得分:1)

我们的团队尝试改进编译时间的一件事是删除项目不需要的模块和控件集(论坛,电子商务等......)以加快编译时间。 另外,您使用哪种方法进行开发,门户或aspx?正如我们已经注意到,门户网站方法中的编译速度比ASPX更快。

答案 1 :(得分:0)

我读过的所有内容都表明用Keneto很难实现使用aspnet_compiler进行预编译。

然而,我设法在Kentico的论坛上找到了this post,其中有人似乎找到了让你的系统为他们工作的方法(在页面上搜索EHUGGINS-PINNACLEOFINDIANA,你会发现它)。

我听说使用MSDeploy或MSBuild是一种比直接调用aspnet_compiler更有效的预编译方式(尽管我很确定这两种方法仍然可以调用aspnet_compiler或者做同样的事情,但速度更快)。 / p>

我个人从未尝试过使用这些方法中的任何一种(我自己对ASP.NET很新),但我想我至少可以给你一些线索:

http://odetocode.com/blogs/scott/archive/2006/10/18/what-can-aspnet_compiler-exe-do-for-me.aspx

http://therightstuff.de/2010/02/06/How-We-Practice-Continuous-Integration-And-Deployment-With-MSDeploy.aspx

http://www.troyhunt.com/2010/11/you-deploying-it-wrong-teamcity_26.html