2012-08-01 119 views
0

這是一個非常基本的問題 - 在網頁中同步或異步加載腳本和圖像(例如在Ajax請求中發生了什麼)?我說的是包括圖像和腳本的普通的HTML方式 - 和 腳本和圖像是同步加載還是同步加載?

我只是想知道瀏覽器如何反應,包括比較大的文件,如jQuery(這大約是2MB上次我檢查)或其他大圖書館或大圖片,我是否應該擔心這會讓我的用戶在連接到我的網站時停留幾秒鐘?我特別想知道jQuery開銷,因爲我正在考慮將它用於一個小型項目......

+0

如果您從像Google那樣的CDN加載jQuery,那麼它已經存在於客戶端瀏覽器緩存中。 – Pointy 2012-08-01 13:53:10

+1

其實,jQuery是32KB。 – SLaks 2012-08-01 13:54:39

+2

jQuery不是2Mb - v1.7.2是247Kb的評論和93Kb的縮小。在服務器爲瀏覽器gzip的情況下,這個數據量會大大減少。 – 2012-08-01 13:55:14

回答

6

圖像是異步加載的,可能是同時加載的。不要爲它們煩擾,只要儘可能小,並使用CSS精靈。

腳本阻塞,即在完成下載前一個腳本之前無法加載下一個腳本。這是可以理解的,因爲可能存在一些腳本間依賴關係。

您通常所做的是將所有JavaScript資源壓縮並縮小爲包含在頁面底部的一個文件。通過這種方式,頁面可以很好地呈現,從而提供良好的用戶體驗,並在最後載入腳本。畢竟,您通常在DOM準備事件之前不會運行腳本。

而BTW jQuery minified只有93K左右。如果你使用上面的鏈接,它很可能會一勞永逸地緩存在瀏覽器中。

+1

500k?更像93k。 – Oded 2012-08-01 13:57:35

+0

@Oded:絕對,我愚蠢的錯誤,謝謝! – 2012-08-01 13:59:36

+3

我非常喜歡jQuery大小這個非常不同的主張。 – 2012-08-01 13:59:37

-1

我認爲HTML的正常行爲是同步加載所有文件(圖像和腳本)。

雖然可以編寫一個小的內聯JavaScript異步加載文件,但這是可能的。

1
  • 只要服務器發送的DOM,瀏覽器可以顯示 網站。

  • 圖像被asynchroneously加載,因此大圖像出現 慢慢慢速連接

  • jQuery是32KB

  • 腳本負載一個接一個,不同時

+1

實際上服務器只是發送html,它是瀏覽器將其解析爲DOM。 – Esailija 2012-08-01 13:57:46

+0

謝謝。呃,關於jQuery的大小,最近他們做了改進還是我對它的大小有完全錯誤的想法?我記得大約一年前下載了一個約2MB的jQuery庫,但也許這只是一個夢想:) – 2012-08-01 13:59:07

0

腳本是同步的(但它們可能包含異步代碼)
圖像加載是異步

1

要添加到什麼已經說了,有是做負載腳本的同時,但仍然確保他們執行在它們出現順序腳本加載庫在那裏。一個我已經使用並且會推薦的是head.js。它提供了一個非常簡單的接口(下面是從圖書館的網站複製):

head.js("/path/to/jquery.js", "/google/analytics.js", "/js/site.js", function() { 
    // all done 
}); 

此外,爲了澄清有關jQuery的大小的混亂......爲1.7版本。2:

  • Unminified和uncompressed它是275 KB
  • 縮小爲95 KB
  • 縮小和壓縮它大約是34 KB(這是你在jQuery網站上看到的價值)。

最後一個選項是您在生產網站上實際使用的選項;所以您需要下載2 MB庫的用戶的擔心可以放下。