2011-01-06 72 views
3

我爲項目使用jQuery,並可能有十幾個附加jQuery插件/插件(醉意,統一,可jeditable,fancybox等)。JavaScript是否僅在需要時才加載?

作爲一種最佳做法,我是否應該只在頁面需要時加載這些內容?

或者我最好從一開始就加載它們,所以它們在瀏覽器的緩存中,只需要用它來完成,而不必在需要時編程包含代碼?

回答

1

這要看情況。您必須根據載入文件的大小和時間進行判斷。如果整個文件與文件尺寸合理,則可以將它們全部包含在內。否則,在需要時包括它們。或者您甚至可能希望在用戶通過網站的不同時間將它們包含在內,以便當它們到達需要大量網頁的頁面時,它們不一定都要立即加載。除非你在談論大量的文件大小(我懷疑它),否則這種方式可能不會產生巨大的影響。

0

一般而言,您應該只加載頁面上所需的腳本。

您添加的每個文件都是對您的服務器的額外調用(假設不縮小),添加到負載和流量。

在客戶端,再次,額外的流量和瀏覽器需要解析它。

將所有這些文件放在每個頁面中可能會更容易,但是,是否所有人都會轉到所有頁面並需要所有腳本?

這是一個折衷,你需要測試你的服務器和客戶端,看看你的情況最好。

+0

關於額外的調用,我可以將所有代碼緩存到一個.js文件中,如果需要的話......這將完全消除額外的調用。 – Shpigford 2011-01-06 15:04:39

0

取決於您要提交的分組,但是如果它的內容類似5個腳本,只需將它們與minify請求一起串起來並加以處理即可。然後它被緩存,不必再檢查服務器。

你可以看到我做了什麼here本:

<script type="text/javascript" src="http://www.tylerbel.com/workspace/min/f=workspace/js/jquery-1.4.2.min.js,workspace/js/jquery-ui-1.8.5.custom.min.js,workspace/js/main.js"> 
0

對我來說,我發現如果你使用PHP,你可以很容易地定義你想要調用什麼。我所做的是我有一個預定義的標題,它調用了我製作php的一個js文件。在php js文件中,我將每個腳本放在會話中,而不是在if語句中取消設置會話。比在我使用的頁面上我調用的頂部假設$ _SESSION ['chatjs'] ='1'; ...在php js我會用if(isset($ _ SESSION ['chatjs'] )){include('whatever.js);未設置($ _ SESSION [ 'chatjs']); }這有助於我的網站從第二次加載時間加速到每頁0.035加載時間,具體取決於頁面上的所有內容。

相關問題