我最近询问了我目前工作地点的前首席开发人员,为什么他选择使用Razor 生成器将我们的视图预编译到单独的程序集中。
他在下面提出了一些声明,但我似乎无法在网络上找到任何Razor Generator配置文件和/或指标来支持该声明(快 10-100 倍),和/或,如果IIS7/ASP.NET确实如此关于预编译与运行时编译的视图的幕后以及它们的好处或缺乏。
谁能指出我正确的方向?还是评论?
在我看来(就启动时间而言)只需为站点设置 IIS就可以平衡使用Razor Generatorautostart = true
进行预编译的任何好处。以下是他的声明:
为什么我们使用 Razor 生成器来预编译我们的视图以及为什么将它们放在单独的程序集中?
第一个是简单的编译时错误检查。有了这么多视图,这似乎是避免生产错误的好方法。不得不重新编译才能看到我承认的观点的变化有点令人沮丧,但(在我看来)知道你有更多的错误检查是完全值得的。
第二个是当视图没有在项目中编译时,它们会在运行时编译,然后那些编译的表示必须存储在 ram 中。有时,如果不定期访问它们(大多数视图都是这种情况,因为有这么多),那些存储的编译版本会被丢弃并收集垃圾以节省内存。因此,除了像 gaf.com 这样的网站中最常访问的视图之外,所有视图最终都会在每次访问时重新编译。但是如果你把它们放在一个项目中,编译的版本只需要从 dll 加载,如果它还没有在内存中(是的,代码也可以被垃圾收集,但不那么频繁)。从 dll 加载它的速度要快 10 到 100 倍(这是来自 Razor Generator 项目的站点 - 我自己没有验证它,但听起来很合理)。