2010-09-30 51 views
2

任何人都可以在網絡性能, 加載外部CSS(合併CSS) 加載外部JavaScript(組合的JavaScript) 內嵌CSS /內嵌的JavaScript <解釋 - 將阻止其他資源的下載,建議把外部CSS之前的JavaScriptWeb性能,內嵌腳本質疑

我怎樣才能把javascript的外部CSS前,當我合併的JavaScript?有沒有辦法阻止加載的圖像,而不是將內聯JavaScript作爲外部腳本?

更新
爲了澄清,根據網絡性能博客/文章中,我們應該首先加載外部的東西,javascript的之前,首先加載外部CSS。然後做內嵌樣式/ JavaScript,但上有內嵌的JavaScript一抓,因爲一旦我們這樣做是加載外部資源下的堆棧(圖像)的其他資源後,然後封鎖。

說在Firefox中,你有6個連接(假設),你在外部CSS /外部JavaScript打開2個連接,因此你仍然有4個連接,現在你想利用這個打開的連接,但問題是,一個嵌入式JavaScript,可以阻止其他資源的下載,並且只會在嵌入式JavaScript執行後繼續下載。

有人說,你需要之前外部把內嵌的JavaScript,以便打開的連接使用,但問題是,你需要從外部進行一些參考就不可能在外部資源之前所說的那樣。其他博客/文章說,我們應該把內嵌的JavaScript外部並結合他們作出一個外部JavaScript(在後臺,緩存),但是這似乎是當前網站即時通訊做了很多工作。

有什麼辦法,如果你有需要/依賴於你的外部JavaScript的內聯JavaScript來利用網絡的性能?由於

+0

我不明白你的問題。請澄清。 – Sjoerd 2010-09-30 11:00:12

+0

據我所知,內聯Javascript不會阻止進一步下載頁面的資源。你從哪裏讀到的? – everconfusedGuy 2016-12-13 12:57:58

回答

1

好,一般你想:

  • 您的外部JavaScript來異步加載(在一個文件,如果可能的話,微細化以及您的網絡服務器壓縮偏離航向)
  • 你的內聯JavaScript是非阻塞

如果要做到這一點,你可能想看看labjs是:

一個通用的,按需的JavaScript頁面加載[...]由 加載(和執行)的 平行的所有腳本一樣快,瀏覽器會 允許在 裝載機[是]減少資源 阻塞。您可以輕鬆地指定 腳本具有執行順序 依賴和LABjs將確保 正確的執行順序。

我目前正在做一些測試,以比較一個正常的頁面與多個JavaScript的資源與同一頁面,但與labjs,如果你感興趣,我可以讓你張貼在結果上。

+0

生病看看它看起來很有希望。謝謝 – monmonja 2010-10-06 15:55:15

+0

那麼,labjs是如何爲你工作的? – futtta 2010-10-14 11:39:12

0

當你鏈接到你的頭,例如JavaScript文件,無論是DOM建設和渲染被延遲,直到該腳本文件完成下載,並且也跑了。

最有效的方法是將外部JS文件移動到元素的底部,並直接在其後面添加它所依賴的內聯腳本。

理想情況下,除非您的網站在沒有JavaScript的情況下完全無法使用,否則您應該將所有JS資產移動到body元素的末尾,並將樣式表保留在沒有依賴關係的任何關鍵內聯腳本的頭部。

如果你想借此更上一層樓,將它們轉移到你的身體結束後,你可以對外部腳本標籤使用defer屬性的: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script#attr-defer 爲了避免任何潛在的依賴問題,你可以將您的內聯腳本放入從您自己的域加載的單獨文件中,並在此外部腳本之後加載它,同時使用相同的延遲屬性。

Defer按照它們出現在源代碼中的順序維護JS文件的執行,同時不阻止渲染。