gpt4 book ai didi

ASP.NET 编译模式“自动”与“从不”

转载 作者:行者123 更新时间:2023-12-02 11:04:49 28 4
gpt4 key购买 nike

假设我的 ASPX 页面没有内联 C# 代码块。

所以,我可以安全地设置

<pages compilationMode="Never" />

...在我的 web.config 文件中,不用担心编译错误。

就性能而言,使用以下设置是否会有任何损失?

<pages compilationMode="Auto" />

即“自动”检测是否需要花费大量时间?

最佳答案

自动的影响似乎很小。 (尽管显然比从不多)。

如果我们检查 System.Web.UI.TemplateParser 中的代码,我们在 ImportSourceFile 中看到如果模式设置为 Never,则该进程会提前中止:

if (this.CompilationMode == CompilationMode.Never)
{
return null;
}

这当然是有帮助的,而且绝对是影响最小的。然而,继续执行 TemplateParser 中的例程,我们可以在 ParseStringInternal 中看到解析器逐字扫描加载的模板,搜索 <% 的变体:

if (!this.flags[2] && (match = BaseParser.aspCodeRegex.Match(text, startat)).Success)
{
string str3 = match.Groups["code"].Value.Trim();
if (str3.StartsWith("$", StringComparison.Ordinal))
{
this.ProcessError(SR.GetString("ExpressionBuilder_LiteralExpressionsNotAllowed", new object[] { match.ToString(), str3 }));
}
else
{
this.ProcessCodeBlock(match, CodeBlockType.Code, text);
}
}

注意 BaseParser.aspCodeRegex ,这是此模式的一个实例:

public AspCodeRegex()
{
base.pattern = @"\G<%(?!@)(?<code>.*?)%>";
...
}

如果没有遇到,它就会继续前进。搜索是一个相当便宜的操作 - 最大的打击是当实际找到代码块并编译它们时。

关于ASP.NET 编译模式“自动”与“从不”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1416711/

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