2016-04-15 5 views
8

私はindex.htmlをの頭になぜContent-Security-PolicyはChromeにJavascriptを順番にロードさせるのですか?

<meta http-equiv="Content-Security-Policy" content="default-src 'self'"> 

を追加しているとき、私は、かなり遅いロードするウェブサイトを、持っています。

しばらくの間デバッグした後、このメタタグが存在すると、すべてのjavascriptソースが順番に読み込まれます。このタグを削除すると、javascriptが並行して読み込まれるため、ウェブサイトの読み込み速度が大幅に向上します。ここで

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Test</title> 
    <meta http-equiv="Content-Security-Policy" content="default-src 'self'"> 
    </head> 

    <body> 
    Hello World 
    <script src="angular.js"></script> 
    <script src="angular-animate.js"></script> 
    <script src="angular-touch.js"></script> 
    </body> 
</html> 

"コンテンツセキュリティポリシー" メタタグWITHネットワークのタイムラインである:これを再現するために

は、私はこのリッテサンプルHTMLファイルを書いた

timelineWithTag

として、リソースが順番にロードされることがわかります。

"Content-Security-Policy"タグを削除したときのネットワークタイムラインです。

timelineWithoutTag

予想したように、Javascriptのressourcesはここに並列にロードされ、ページには、小さな例を挙げてはるかに高速にロードが終了。

この現象の説明はありますか? "Content-Security-Policy"を有効にしながらJavascriptファイルを同時に読み込むことができますか?

すべてのテストは、当時は最新のChrome(50.0.2661.75(64ビット))で行われました。 SafariとFirefoxのどちらも同じ奇妙な挙動を示していません。両方ともjavascriptを読み込み、「Content-Security-Policy」がアクティブになっています。

+0

これはあなたを助けるかもしれない;)[セキュリティポリシーをコンテンツに紹介](http://www.html5rocks.com/en/tutorials/security/content-security-policy/)あなたが作成することができます"withe list"しかし、私はそれが助けているとは確信していません... –

+0

あなたのドメインには、JSファイルのようなあなたの静的資産のキャッシュヘッダーが有効になっていますか? – TeaCode

+0

https://mobile.twitter.com/で同じCSPヘッダー*(メタタグではありませんが同じである必要があります)を使用しています*を再現できません。また、パラレルでリソースをロードするようです。他のブラウザでもテストし、問題がChromeにあるかどうか確認する必要があります。 – adeneo

答えて

0

これは、両方のブラウザは数ミリ秒で、無効にキャッシングと並行してローカルホストからこれらの3つのファイルを提供している

Chrome 49.0.2623.110 (64-bit) 
Chrome 50.0.2661.75 (64-bit) 

を使用してMac上で再現可能ではありません。

ローカルサーバではなくローカルサーバでもこれを試してみましたが、どちらも遅くなりましたが、すべてのファイルが並列にロードされています。

私は、CSPのためにC++を使うMozillaの変更があったと思うが、これは数年前のことであり、Chromeには影響しないだろう。

https://blog.mozilla.org/security/2014/09/10/faster-csp/

+0

これをテストいただきありがとうございます。私は、MAC上でChrome 50.0.2661.75(64ビット)でテストを実行しています。私はまた、Windows 10でChromeについてもテストしましたが、スクリプトファイルのロードを順次再現できるようになっています。 Chromeデベロッパーツールを使用して読み込み動作を監視していますか? www.sonopad.com/kronoをテストとして開くことができますか?私はテストの自分のファイルをホストしています。 サーバーがそれらにサービスを提供する方法に何か違いがあるのでしょうか? – bluegaspode

関連する問題