js、css引用文件的下載方式


js、css引用文件的下載方式

一、測試(chrome):
1、直接使用<script...>、<link...>標簽來混合引入腳本文件和css文件,

<script async src="1.js"></script>
<link rel="stylesheet" href="a.css">
<script async src="2.js"></script>
<link rel="stylesheet" href="b.css">
<script async src="3.js"></script>

 

所有文件異步並行下載,asyn屬性的有無不影響下載。html下載完成后(css、js還未下載)即觸發DOMContentLoaded事件。

2、通過如下document.write的方式加入腳本,並與<link...>標簽混雜:

<script>document.write('<script src="1.js"></scr'+'ipt>');</script>
<link rel="stylesheet" href="a.css">
<script>document.write('<script src="2.js"></scr'+'ipt>');</script>
<link rel="stylesheet" href="b.css">
<script>document.write('<script src="3.js"></scr'+'ipt>');</script>

 

則:A、首先第一個css文件之前的js文件與所有的css文件並行下載。B、在全部css文件下載完成之后,第一個css文件之后的所有js文件串行下載,所有head中的css、js下載完畢后觸發DOMContentLoaded事件。

即a.css、b.css、1.js並行下載,而2.js、3.js在所有css文件下載完畢之后串行下載。

3、通過如下document.write的方式加入腳本,且script加上async屬性,並與<link...>標簽混雜:

<script>document.write('<script async src="1.js"></scr'+'ipt>');</script>
<link rel="stylesheet" href="a.css">
<script>document.write('<script async src="2.js"></scr'+'ipt>');</script>
<link rel="stylesheet" href="b.css">
<script>document.write('<script async src="3.js"></scr'+'ipt>');</script>

 

則:A、首先第一個css文件之前的js文件與所有的css文件並行下載,css全部下載完畢后觸發DOMContentLoaded事件。B、在css文件全部下載完成之后,第一個css文件之后所有js文件並行下載。

即a.css、b.css、1.js並行下載,而2.js、3.js在所有css文件下載完畢之后並行下載(異步)。

4、通過如下appendChild的方式加入腳本,並與<link...>標簽混雜:

<script type="text/javascript">
function _appendJs(v) {
var gumAppscript = document.createElement("script");
gumAppscript.src = v + ".js";
document.head.appendChild(gumAppscript);
}
</script>

<script>_appendJs(1)</script>
<link rel="stylesheet" rel="stylesheet" href="a.css">
<script>_appendJs(2)</script>
<link rel="stylesheet" rel="stylesheet" href="b.css">
<script>_appendJs(3)</script>

 

則:下載過程與上述第3種基本一樣,即appendChild添加script默認為async下載。

5、上述下載過程,在head內與在body內的過程一樣(執行過程另論)。

二、推測:
1、一旦有css文件引用開始后,后續的document.write添加script變成串行下載。
2、DOMContentLoaded事件觸發時機,第1種方式最快,第3、4種方法次之,第2種最慢。
3、appendChild添加script標簽,與document.write添加async的script,下載基本一致。
4、就文件下載過程而言,在head內與在body內的過程一樣。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM