gpt4 book ai didi

asp.net - Razor 生成器 : Is this accurate?

转载 作者:行者123 更新时间:2023-12-02 18:36:08 24 4
gpt4 key购买 nike

我最近询问了我当前工作地点的前首席开发人员,为什么他选择使用Razor Generator将我们的 View 预编译为单独的文件组装。

他在下面提出了一些主张,但我似乎无法在网络上找到任何 Razor Generator 配置文件和/或指标来支持该主张 (10-快 100 倍),和/或,IIS7/ASP.NET 在预编译 View 与运行时编译 View 的幕后做了什么以及它们的优点或缺点-那里-的。

有人能指出我正确的方向吗?或者评论?

在我看来(就启动时间而言),只需为站点设置 IIS autostart = true 就可以平衡使用 Razor 进行预编译的任何好处生成器。以下是他的声明:

为什么我们使用 Razor 生成器来预编译我们的 View 以及为什么将它们放在单独的程序集中?

The first is simple, compile-time error checking. With this many views it seemed like a great way to avoid errors on production. It's a bit frustrating having to recompile to see the changes to the views I admit, but it is (in my opinion) totally worth it to know that you have that much more error checking upfront.

The second is that when the views aren't compiled in a project they get compiled at runtime and then those compiled representations have to be stored in ram. Sometimes, if they're not accessed regularly (which is the case with most of those views since there are so many) those stored compiled versions get abandoned and garbage collected to save ram. So all but the most frequently accessed views in a site like gaf.com end up being recompiled every time they are accessed. But if you put them in a project the compiled versions just need to be loaded from the dll if it's not already in memory (yes code can be garbage collected too, but less often). Loading that from the dll is 10 - 100 times faster (that's from the Razor Generator project's site - I didn't verify it myself, but it sounds reasonable).

最佳答案

我们也遇到了同样的问题。我们开始编译 View ,以便发现在集成测试用户体验测试期间出现的明显问题。更糟糕的是错误以某种方式潜入生产环境。

但是,我们的构建时间变得难以忍受。我们的开发人员进行了无数次构建,这成为了我们这一天的主要部分。我们开玩笑说午餐后进行测试,这样构建就可以在我们外出时完成。

我们最终在用户体验测试之前开始构建。

<小时/>

现在我们正在转向预编译。目前我们团队中只有一个人采用了它,并且显然预编译明显优于构建(增量与总体)。设置基本上是一个 nuget fetch。

这些文章应该是一个好的开始

http://stacktoheap.com/blog/2013/01/19/precompiling-razor-views-in-asp-dot-net-mvc-3/

http://blog.davidebbo.com/2011/06/precompile-your-mvc-views-using.html

<小时/>

预编译为我们提供了部署现成的二进制文件的所有优势。我们的用户在第一次点击 View 时不会遇到短暂的延迟。

据我所知,IIS autostart = true 将启动您的应用程序池,但不会强制编译您的 View 。因此,您将获得第一个使用每个 View 的用户的初始启动点击。

关于asp.net - Razor 生成器 : Is this accurate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16067687/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com