小编blu*_*ode的帖子

为什么Content-Security-Policy会强制Chrome按顺序加载Javascript?

当我添加时,我有一个加载速度相当慢的网站

<meta http-equiv="Content-Security-Policy" content="default-src 'self'">
Run Code Online (Sandbox Code Playgroud)

到index.html的负责人.

经过一段时间的调试我意识到,当存在这个元标记时,所有的javascript源都是按顺序加载的.当我删除此标记时,javascript被并行加载,因此网站能够加载更快.

为了重现这一点,我写了这个小样本html文件:

<!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>
Run Code Online (Sandbox Code Playgroud)

以下是具有"Content-Security-Policy"元标记的网络时间轴:

timelineWithTag

可以看出,资源是按顺序加载的.

这是网络时间线,当我删除"Content-Security-Policy"标签时.

timelineWithoutTag

正如预期的那样,Javascript资源在这里并行加载,即使用一些小例子,页面加载也要快得多.

这种行为有什么解释吗?我怎样才能拥有两全其美的优势:并行加载Javascript文件,同时激活"Content-Security-Policy"?

这些测试都是在最新的Chrome(50.0.2661.75(64位))完成的.Safari和Firefox都没有表现出相同的奇怪行为,它们都加载了javascripts并行激活了"Content-Security-Policy".

javascript performance html5 google-chrome

8
推荐指数
1
解决办法
347
查看次数

标签 统计

google-chrome ×1

html5 ×1

javascript ×1

performance ×1