首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Content-Security-Policy强制Chrome顺序加载Javascript?

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

Stack Overflow用户
提问于 2016-04-16 04:36:17
回答 1查看 629关注 0票数 8

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

代码语言:javascript
复制
<meta http-equiv="Content-Security-Policy" content="default-src 'self'">

到index.html的头上。

经过一段时间的调试,我意识到,当这个meta标签出现时,所有的javascript源代码都是按顺序加载的。当我去掉这个标签时,javascript是并行加载的,所以网站的加载速度要快得多。

为了重现这段代码,我编写了这个小示例html文件:

代码语言: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>

下面是带有"Content-Security-Policy“元标签的网络时间线:

可以看到,资源是按顺序加载的。

这是当我去掉"Content-Security-Policy“标签时的网络时间表。

正如预期的那样,Javascript资源在这里是并行加载的,即使是小的例子,页面完成加载的速度也要快得多。

对这种行为有什么解释吗?如何才能两全其美:并行加载Javascript文件,同时激活"Content-Security-Policy“?

这些测试都是用目前最新的Chrome (50.0.2661.75 (64位))完成的。Safari和Firefox都没有表现出同样奇怪的行为,它们都是在"Content-Security-Policy“被激活的情况下并行加载javascripts的。

EN

回答 1

Stack Overflow用户

发布于 2016-04-16 07:08:21

这在MAC上是不可重现的

代码语言:javascript
复制
Chrome 49.0.2623.110 (64-bit)
Chrome 50.0.2661.75 (64-bit)

这两种浏览器都能在几毫秒内从localhost提供这三个文件,并同时关闭缓存。

我也在一个远程服务器上尝试过,即不是本地主机,两者都变慢了,但所有文件都是并行加载的,也就是说,我看不出在打开或关闭CSP的情况下有什么不同。

我相信Mozilla会有一个改变,在CSP上使用C++,但那是几年前的事了,它不会影响Chrome。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36656389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档