【发布时间】:2013-04-10 16:00:12
【问题描述】:
我最近询问了我目前工作地点的前首席开发人员,为什么他选择使用 Razor Generator 将我们的观点预编译成单独的组装。
他在下面提出了一些声明,但我似乎无法在网络上找到任何 Razor Generator 配置文件和/或指标来支持该声明(10-快 100 倍),和/或,如果 IIS7/ASP.NET 在幕后对预编译与运行时编译的视图及其优势或不足做了什么-那里的。
谁能指出我正确的方向?还是评论?
在我看来(就启动时间而言)只需为站点设置 IIS autostart = true 就可以平衡使用 Razor 生成器进行预编译的任何好处强>。这是他的声明:
为什么我们使用 Razor 生成器来预编译我们的视图以及为什么将它们放在单独的程序集中?
第一个是简单的编译时错误检查。有了这么多观点 这似乎是避免生产错误的好方法。有点 令人沮丧的是不得不重新编译才能看到我对视图的更改 承认,但(在我看来)完全值得知道你 预先进行更多的错误检查。
第二个是当视图没有在项目中编译时,它们 在运行时编译,然后那些编译的表示有 存储在内存中。有时,如果他们没有定期访问 (大多数观点都是这种情况,因为有这么多) 那些存储的编译版本被废弃并被垃圾收集到 节省内存。因此,除了网站中最常访问的视图之外,所有视图都像 每次访问 gaf.com 时都会重新编译。但如果 你把它们放在一个项目中,只需要加载编译的版本 如果它不在内存中,则来自 dll(是的代码可能是垃圾 也收集,但较少)。从 dll 加载是 10 - 100 快几倍(来自 Razor Generator 项目的网站 - 我 没有自己验证,但听起来很合理)。
【问题讨论】:
-
他的所有观点在技术上都是正确的。随意阅读我的经验和解决方案stackoverflow.com/questions/14866711/…
-
为什么不将其添加为响应,以便我可以将其标记为答案,如果您输入预编译堆栈到 iis7 自动启动的方式?
-
我希望这能说明问题......
标签: asp.net asp.net-mvc-4 asp.net-mvc-5 razorgenerator pre-compilation