如何在混合AngularJS和Angular 5应用中限制XHR的变化检测

时间:2018-02-06 14:13:07

标签: angularjs angular performance angular-digest ngzone

我有一个相当大的混合AngularJS / Angular应用程序,我从Angular 4升级到Angular 5以摆脱导致过多$摘要和缓慢的UpgradeModule。但现在我注意到,在每个AngularJS XHR请求中,Angular 5确实改变了每个降级的Angular 5组件的检测。由于我有相当大的表组件,变化检测量会爆炸并导致严重滞后(如20秒而不是0)。

我已阅读here,可以降级NgZone并用于限制通话。

但我想知道是否真的需要检查每个XHR请求的每个组件?

有没有办法限制这些检查或完全关闭XHR请求? (对于某些组件或许?)

任何其他模式可能有助于解决此问题?

这是一个概述,显示XHR请求造成的延迟。 enter image description here

这是一个放大视图的细节: enter image description here

修改 它确实有助于将OnPush设置为所有组件的changeDetection,这似乎是合乎逻辑的。但似乎每个点击事件和XHR请求(我将更改为在此处获取以尝试避免它)会导致$ digest并且还会导致相同的调用堆栈(尽管工作量较少)。一个例子是下面的组件:

enter image description here

@Component({
    selector: "oc-filter",
    templateUrl: "./header-filter.component.html",
    styleUrls: ["./header-filter.component.scss"],
    encapsulation: ViewEncapsulation.None,
    changeDetection: ChangeDetectionStrategy.OnPush
}) 

所以堆栈仍然非常相似: enter image description here

Angular仍然会通过所有组件吗? 有没有办法在早期阶段阻止这种情况?

0 个答案:

没有答案