12

İçerik güvenliği ilkesinin etkinleştirilmesi ve ng-csp yönergesinin eklenmesi, Açısal'nın belirli bir en iyileştirme için ve eval() kullanımını engeller.ng-csp yönergesinin performans etkisi

Doktor, performansın% 30'a kadar düşebileceğini belirtiyor.

ng-csp yönergesi kullanılarak gerçek açıda hangi özelliklerin gerçekten etkilendiğini merak ediyordum.

Bu yönergeyi kullanmanın maliyetini azaltabilecek geçici çözümler, örüntüler veya başka fikirler var mı?

+0

muhtemelen yolları önbelleğe veya derin yollara sığ adlar yaparak aramalarını azaltabilir (örn. 'Memesinin = a.b.c.d.e.x'). – dandavis

cevap

5

Bazı araştırma ve performans isabet anlamak için en kolay yolu 2012

şey çözünürlükleri kullanmak gerekir ki geri angularjs CSP desteği tanıttı olduğunu initial commit (see issue on Github too) bakmaktır yaptılar (alt) ifadeleri gibi

HTML şablon dosyalarınızdaki Açısal ifadelerde

. Bu açısal ayrıştırıcı, bu ifadeleri ayrıştırmak için ilk olarak new Function(arguments, code) kullanılır. Ancak, CSP'yi desteklemek için new Function() veya eval() kullanamazsınız. Sihirli sayı% 30, http://jsperf.com/angularjs-parse-getter/4'dan (source) geliyor gibi görünüyor. Sonuçların yorumlanması, for döngüsüne sahip kodun (yani, montajda atlar), kodlanmış olan/genişletilmiş bir for döngüsüne sahip koddan daha yavaş olmasıdır.

Önceki paragrafların ışığında, performans isabetini azaltmak için yapabileceğiniz anlamlı bir şey olduğuna inanmıyorum. Belki (çaresiz iseniz) sadece uzun ifadeleri kullanmayın (a.b.c.d.e.f.g.h gibi) ve oldukça kısa olanları kullanın, ancak kodunuzu optimize etmenin uygun bir yol olduğunu düşünmüyorum. (CSP etkin için) ASTInterpreter ve ASTCompiler (devre dışı CSP için): two parsers vardır 2015

Hızlı ileri, angularjs ölçüde değişti Codebase ama görebilirsiniz. Belki de ASTInterpreter'u ASTCompiler ile karşılaştırmak için bu ayrıştırıcılarda kod değerlendirme performanslarını koyabilirsiniz.

HTH

+1

Teşekkürler Martin. Bu gerçekten yararlı – HipsterZipster

İlgili konular