2014-01-30 88 views
1

正如我所看到的,每次加載網站時加載jQuery都很慢。即有沒有辦法從jQuery實時加載特定功能?

<!-- jQuery --> 
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script> 
<!-- Site Scripts --> 
<script type="text/javascript" src="js/myJS.js"></script> 

與將jQuery下載到本地文件系統並將其導入本地相比。即

<!-- jQuery --> 
<script type="text/javascript" src="js/jquery-someversion.min.js"></script> 
<!-- Site Scripts --> 
<script type="text/javascript" src="js/myJS.js"></script> 

顯然取決於我的互聯網的速度加載腳本的時間。

我想知道是否有某種類型的jQuery API允許我使用HTML腳本標記「延遲加載」它(jQuery)。我的意思與延遲加載jQuery是:只加載特定的功能(S)我會使用,即

<!-- jQuery --> 
<script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js/events"></script> 
<!-- Site Scripts --> 
<script type="text/javascript" src="js/myJS.js"></script> 

改變了源:<腳本.... SRC =「HTTP:// code.jquery.com/jquery-latest.min.js/ 事件「/>

我知道我可以查找該特定功能的jQuery代碼,並在需要時加載它自己,但我每次jQuery有更新或其他內容時,都不希望將這些功能複製到我的本地文件系統中。如果你還沒有得到我要去的地方,我想要的是有一種方法,我知道這些功能是最新的和支持的(通過jQuery),所以後來的錯誤修復/改進/更改/添加/交叉瀏覽器支持jQuery是「自動」實現在我的網站。

+0

它可能是「慢」,但它只是在*第一*一次它的速度慢。另外,如果你使用真正的版本(而不是總是最新的版本),你將有更好的緩存,因爲超時不會盡快過期。 (由於顯而易見的原因,這是「最新」版本,因此不能被緩存太長)。 –

+0

'// ajax.googleapis.com/AJAX /庫/ jQuery的/ 1.10.2/jquery.min.js'是* *僅32.5KB後,HTTP壓縮*和*是*很緩存*。我認爲也許還有其他性能問題需要首先消除。 – user2864740

+0

當一個BUG修復傷了你的生產代碼比... – epascarello

回答

2

如果您要使用CDN的路徑,那麼就不會,如果先前已緩存重新下載該文件。它增加了緩存命中的可能性。 (隨着越來越多的網站採用這種做法,更多的用戶已經準備好了該文件。)

1

你不這麼說! jQuery的大小隻有32KB!

http://code.jquery.com/jquery-latest.min.js

你會花時加載多個文件不止一個。此外,將所有JS和CSS文件合併成一個JS和一個CSS文件將是一個好主意。

+0

尼特:這是〜90KB,它下降到〜32KB與HTTP壓縮。 – user2864740

+0

那又如何? :-) P.S.不是HTTP壓縮,但gzip ;-) – Oleg

2

你是總是會慢取jquery-latest vs jquery-version - 服務器強制執行它。例如:

http://code.jquery.com/jquery-latest.min.js

jquery-latest headers

http://code.jquery.com/jquery-1.10.2.min.js

enter image description here

注意,現在有派出非常將來日期Expires頭。這意味着一旦第一頁被加載,瀏覽器就會緩存這個版本很長一段時間,使得後續頁面調用幾乎沒有延遲。

然而,通過使用最新版本,您需要強制瀏覽器以的每個頁面加載來獲取此文件。當然,這會增加延遲。

我想要的是我有一個方法,我知道功能是最新的日期和支持(通過jQuery)所以後來bug修復/改進/更改/添加/跨瀏覽器支持jQuery在我的網站中「自動」執行。

當你寫的東西,使用$.browser.die().live除然後不知道爲什麼它不再工作。

有東西花費幾分鐘,更新您的JS文件可說的(尤其是如果它意味着你的網站昨天工作,今天不,你不知道爲什麼)。

+1

即使「最新」版本也不會發生非常快的變化,但對資源URL的更新已足夠(新資源也具有較長的緩存週期,假設服務器已正確配置)。當然,使用CDN確實有助於全球緩存。 – user2864740

+0

@ user2864740:這不是關於文件本身,而是瀏覽器如何管理緩存。此外,你繼續抓取最新的內容,然後你將運行(最終)發佈一些從活動到廢棄的內容。 (*咳嗽*'$ .browser'或'$()。live') –

+0

哦,我不贊成以任何方式「自動更新」(超過點數發佈)。 – user2864740

2

您可以創建自己的jQuery構建,但您必須自己託管它。

按照"How to build your own jQuery" guide的說明:

特殊的構建可以創建排除jQuery的功能子集。當構建者確定jQuery的那些部分沒有被使用時,這允許較小的定製構建。例如,一個應用程序,僅用於對JSONP $就()和不需要計算偏移或元件的位置可以排除失調和AJAX/XHR模塊。

+0

很酷的閱讀,從來不知道。無論如何,雖然我可能會爲一個非常有限的系統做這件事,我會從不需要模塊X,但我不會將它分解爲「動態加載」模塊 - 這看起來像一場噩夢(然後必須嘗試並將所有東西重新拼接在一起)。 – user2864740

+0

你能舉一個小例子嗎? – camou

相關問題