我有一个网站,它的加载速度相当慢,当我添加
<meta http-equiv="Content-Security-Policy" content="default-src 'self'">到index.html的头上。
经过一段时间的调试,我意识到,当这个meta标签出现时,所有的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>下面是带有"Content-Security-Policy“元标签的网络时间线:

可以看到,资源是按顺序加载的。
这是当我去掉"Content-Security-Policy“标签时的网络时间表。

正如预期的那样,Javascript资源在这里是并行加载的,即使是小的例子,页面完成加载的速度也要快得多。
对这种行为有什么解释吗?如何才能两全其美:并行加载Javascript文件,同时激活"Content-Security-Policy“?
这些测试都是用目前最新的Chrome (50.0.2661.75 (64位))完成的。Safari和Firefox都没有表现出同样奇怪的行为,它们都是在"Content-Security-Policy“被激活的情况下并行加载javascripts的。
发布于 2016-04-16 07:08:21
这在MAC上是不可重现的
Chrome 49.0.2623.110 (64-bit)
Chrome 50.0.2661.75 (64-bit)这两种浏览器都能在几毫秒内从localhost提供这三个文件,并同时关闭缓存。
我也在一个远程服务器上尝试过,即不是本地主机,两者都变慢了,但所有文件都是并行加载的,也就是说,我看不出在打开或关闭CSP的情况下有什么不同。
我相信Mozilla会有一个改变,在CSP上使用C++,但那是几年前的事了,它不会影响Chrome。
https://stackoverflow.com/questions/36656389
复制相似问题