blu*_*ode 8 javascript performance html5 google-chrome
当我添加时,我有一个加载速度相当慢的网站
<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"元标记的网络时间轴:
可以看出,资源是按顺序加载的.
这是网络时间线,当我删除"Content-Security-Policy"标签时.
正如预期的那样,Javascript资源在这里并行加载,即使用一些小例子,页面加载也要快得多.
这种行为有什么解释吗?我怎样才能拥有两全其美的优势:并行加载Javascript文件,同时激活"Content-Security-Policy"?
这些测试都是在最新的Chrome(50.0.2661.75(64位))完成的.Safari和Firefox都没有表现出相同的奇怪行为,它们都加载了javascripts并行激活了"Content-Security-Policy".
这在 MAC 上无法重现
Chrome 49.0.2623.110 (64-bit)
Chrome 50.0.2661.75 (64-bit)
Run Code Online (Sandbox Code Playgroud)
两个浏览器都在几毫秒内从本地主机提供这三个文件,并且与缓存关闭并行。
我还在远程服务器(即不是本地主机)上尝试过此操作,并且速度都减慢了,但所有文件都是并行加载的,即我可以看到打开或关闭 CSP 和未打开 CSP 时没有任何区别。
我相信 Mozilla 进行了更改,将 C++ 用于 CSP,但那是几年前的事了,它不会影响 Chrome。
https://blog.mozilla.org/security/2014/09/10/faster-csp/
| 归档时间: |
|
| 查看次数: |
347 次 |
| 最近记录: |