我有一個約10-12頁強的網站,整個使用jQuery/Javascript。由於並非所有腳本都是必需的,因此我正在使用switch
語句在任何給定頁面上僅輸出所需的JS,以減少請求的數量。使用php來加載腳本的效率?
我的問題是,性能方面的效率如何?如果不是,有沒有其他方法可以有選擇地只加載頁面上所需的JS?
我有一個約10-12頁強的網站,整個使用jQuery/Javascript。由於並非所有腳本都是必需的,因此我正在使用switch
語句在任何給定頁面上僅輸出所需的JS,以減少請求的數量。使用php來加載腳本的效率?
我的問題是,性能方面的效率如何?如果不是,有沒有其他方法可以有選擇地只加載頁面上所需的JS?
這可能根本不需要。
請記住,如果您的緩存設置正確,那麼嵌入JavaScript只會在第一次加載時花費時間 - 每個後續請求都將來自緩存。除非你有很大的例外(例如,使用巨大的JS庫的特定頁面),否則我會考慮隨時嵌入所有內容,也許使用縮小以便一切都在一個小文件中。
雖然我沒有看到您使用的方法有任何性能問題。畢竟,這是關於決定是否輸出一行代碼。長期使用哪種方法最具可讀性和可維護性。
由於您已經使用JS,您可以完全使用JS解決方案 - 例如,您可以使用yepnope而不是php。我不知道你的網站的結構是什麼,以及你如何確定哪個頁面需要什麼或什麼時候包含的東西(在一些遠程事情完成數據交付之後加載),但是如果廣泛使用$ .ajax,你也可以使用yepnope來獲取額外的JS,一旦$ .ajax完成了它應該做的事情。
您可以放心地假設JavaScript在客戶端正確緩存。
正如我還假設你提供一個縮小文件,看到你的網站的大小,我會說性能是可以忽略的。
將所有JavaScript放在一個單獨的「.js」文件中,並將該文件引用到您的頁面中會好得多。
原因是瀏覽器會高效地緩存該文件,並且每次會話只下載一次(或更少!)。
唯一的缺點是如果你改變你的腳本,你需要「刷新」幾次。
所以,經過修改一下,我決定給LABjs一試。它工作得很好,結果我的代碼也不那麼臃腫了。考慮到我的網站的規模,沒有明顯的性能提升,但代碼現在更加可維護。
有趣的是,我有一個像我的標題按鈕的Facebook。在分析螢火蟲的請求後,我決定刪除它,並在加載時間的頁面上獲得驚人的2秒。神聖的廢話是這該死的東西inneficient ...
謝謝你的答案!
請記住,如果您的緩存設置正確,那麼嵌入JavaScript只會在第一次加載時花費時間 - 每個後續請求都將來自緩存。 – 2011-05-11 09:40:03
你能解釋一下你的表現嗎?通過使用php-switch()或通過僅使用必要的JavaScript獲得的性能增益的性能?一般來說,我會說switch()是一種語言結構,您不必擔心性能問題;) – GeneSys 2011-05-11 09:40:44