DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> 關於JavaScript >> JavaScript優化專題之Loading and Execution加載和運行
JavaScript優化專題之Loading and Execution加載和運行
編輯:關於JavaScript     

JavaScript 在浏覽器中的性能,可認為是開發者所要面對的最重要的可用性問題。此問題因JavaScript的阻塞特征而復雜,也就是說,當JavaScript 運行時其他的事情不能被浏覽器處理。事實上,大多數浏覽器使用單進程處理UI 更新和JavaScript 運行等多個任務,而同一時間只能有一個任務被執行。

JavaScript運行了多長時間,那麼在浏覽器空閒下來響應用戶輸入之前的等待時間就有多長。

從基本層面說,這意味著<script>標簽的出現使整個頁面因腳本解析、運行而出現等待。不論實際的JavaScript 代碼是內聯的還是包含在一個不相干的外部文件中,頁面下載和解析過程必須停下,等待腳本完成這些處理,然後才能繼續。這是頁面生命周期必不可少的部分,因為腳本可能在運行過程中修改頁面內容。

典型的例子是document.write()函數,例如:

<html>

<head>

<title>Script Example</title>

</head>

<body>

<p>

<script type=”text/javascript”>

document.write(“The date is ” + (new Date()).toDateString());

</script>

</p>

</body>

</html>

當浏覽器遇到一個<script>標簽時,正如上面HTML 頁面中那樣,無法預知JavaScript 是否在<p>標簽中添加內容。因此,浏覽器停下來,運行此JavaScript 代碼,然後再繼續解析、翻譯頁面。同樣的事情發生在使用src 屬性加載JavaScript 的過程中。浏覽器必須首先下載外部文件的代碼,這要占用一些時間,然後解析並運行此代碼。此過程中,頁面解析和用戶交互是被完全阻塞的。

HTML 4 文檔指出,一個<script>標簽可以放在HTML 文檔的<head>或<body>標簽中,可以在其中多次出現。傳統上,<script>標簽用於加載外部JavaScript 文件。<head>部分除此類代碼外,還包含<link>標簽用於加載外部CSS 文件和其他頁面中間件。也就是說,最好把風格和行為所依賴的部分放在一起,首先加載他們,使得頁面可以得到正確的外觀和行為。例如:

<html>

<head>

<title>Script Example</title>

<– Example of inefficient script positioning –>

<script type=”text/javascript” src=”file1.js”></script>

<script type=”text/javascript” src=”file2.js”></script>

<script type=”text/javascript” src=”file3.js”></script>

<link rel=”stylesheet” type=”text/css” href=”styles.css”>

</head>

<body>

<p>Hello world!</p>

</body>

</html>

雖然這些代碼看起來是無害的,但它們確實存在性能問題:在<head>部分加載了三個JavaScript 文件。因為每個<script>標簽阻塞了頁面的解析過程,直到它完整地下載並運行了外部JavaScript 代碼之後,頁面處理才能繼續進行。用戶必須忍受這種可以察覺的延遲。

請記住,浏覽器在遇到<body>標簽之前,不會渲染頁面的任何部分。用這種方法把腳本放在頁面的頂端,將導致一個可以察覺的延遲,通常表現為:頁面打開時,首先顯示為一幅空白的頁面,而此時用戶即不能閱讀,也不能與頁面進行交互操作

Internet Explorer 8, Firefox 3.5, Safari 4, 和Chrome 2 允許並行下載JavaScript 文件。這個好消息表明,當一個<script>標簽正在下載外部資源時,不必阻塞其他<script>標簽。不幸的是,JavaScript 的下載仍然要阻塞其他資源的下載過程,即使腳本之間的下載過程互不阻塞,頁面仍舊要等待所有JavaScript代碼下載並執行完成之後才能繼續。所以,當浏覽器通過允許並行下載提高性能之後,該問題並沒有完全解決,腳本阻塞仍舊是一個問題。

因為腳本阻塞其他頁面資源的下載過程,所以推薦的辦法是:將所有<script>標簽放在盡可能接近<body>標簽底部的位置,盡量減少對整個頁面下載的影響。例如:

<html>

<head>

<title>Script Example</title>

<link rel=”stylesheet” type=”text/css” href=”styles.css”>

</head>

<body>

<p>Hello world!</p>

<– Example of recommended script positioning –>

<script type=”text/javascript” src=”file1.js”></script>

<script type=”text/javascript” src=”file2.js”></script>

<script type=”text/javascript” src=”file3.js”></script>

</body>

</html>

此代碼展示了所推薦的<script>標簽在HTML 文件中的位置。盡管腳本下載之間互相阻塞,但頁面已經下載完成並且顯示在用戶面前了,進入頁面的速度不會顯得太慢。

以上就是關於javascript優化內容中的Loading and Execution加載和運行的相關介紹,希望對大家的學習有所幫助。

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved