gpt4 book ai didi

javascript - ng-csp 指令的性能影响

转载 作者:可可西里 更新时间:2023-11-01 01:53:38 25 4
gpt4 key购买 nike

启用内容安全策略并添加 ng-csp指令阻止 Angular 使用 Function()eval() 进行某些优化。

文档指出性能最多可降低 30%。

我想知道使用 ng-csp 指令实际上会影响哪些 Angular 特征。

是否有变通方法、模式或其他想法可以降低使用该指令的成本?

最佳答案

我做了一些研究,了解性能影响的最简单方法是查看 initial commit ( see issue on Github too ) 于 2012 年在 AngularJs 中引入了 CSP 支持。

问题是你需要使用像这样的(子)表达式的解析

a.b.c.d.e  

例如

user.data.books

在 HTML 模板文件中的 Angular 表达式中。最初使用的 Angular 解析器 new Function(arguments, code)解析这些表达式。但是,要支持 CSP,您不能使用 new Function()eval()。神奇的数字 30% 似乎来自 http://jsperf.com/angularjs-parse-getter/4 (source)。我对结果的解释是,带有 for 循环的代码(即汇编中的跳转)比带有内联/扩展的 for 循环的代码慢。

根据前面的段落,我认为您无法采取任何有意义的措施来减轻性能影响。也许(如果你很绝望)不要使用长表达式(如 a.b.c.d.e.f.g.h)并使用相当短的表达式,但我认为这不是优化代码的可行方法。

快进到 2015 年,AngularJs 代码库发生了重大变化,但您可以看到有 two parsers :ASTInterpreter(启用 CSP)和 ASTCompiler(禁用 CSP)。也许您可以在这些解析器中放置一些性能评估代码,以将 ASTInterpreterASTCompiler 进行比较。

HTH

关于javascript - ng-csp 指令的性能影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28817312/

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