2011-11-17 19 views
2

我正在努力提高我公司的Intranet頁面的頁面性能。我們希望(動態地)合併我們的JavaScript文件並將它們緩存30天以上。該頁面在所有人登錄時啓動。侵略性緩存vs Intranet網站的Javascript文件組合

我的一位同事問我,如果我們已經緩存了一個月,是否值得花時間合併JS文件。他對做這兩件事猶豫不決,因爲組合工具是服務器端,並且不能在我們的桌面上運行,需要一些有點冒險的解決方法。

我一直在做一些研究和大多數我見過的性能的建議是外部網站。由於我們處於一個封閉的系統中,看起來好像我們在每個人的緩存準備好之後都不會從組合文件中獲得太多好處。結合這些文件會不會讓我們認爲積極的緩存不會?

我們在IE8上,如果這有什麼區別。

回答

2

擁有多個JavaScript文件最顯着的影響是渲染頁面所需的時間。每個腳本標記都會單獨處理,併爲整個渲染過程增加時間。

一個不錯的答案可以在這裏找到@multiple versus single script tags

如果我們對大量的腳本,那麼你可能會看到一個改進的渲染時間;如果它只是兩個或三個文件,那麼一旦文件被緩存後,它可能不會帶來可觀的區別。

我會建議在這兩種情況下測試頁面渲染時間,並看看您在案例中看到多少改進,並根據該信息做出決定。作爲一個有用的例子,這裏有一些來自Xpedite(我創建的運行時縮小工具)的一些統計數據;注意組合與未組合腳本從加載到就緒的時間差異。

+0

我發現了這一切,已經起來了,我很想來簡化我們的JavaScript的加載,但也有幾十個內聯腳本標記在頁面上,它需要一個相當大的重寫。我的問題是圍繞多個腳本標記與一個腳本標記的影響,如果它們所涉及的腳本已被緩存。 –

+0

@Zhoho - 即使腳本已被緩存,解析JS所需的時間仍然適用;如前所述,與相關SO問題的鏈接提供了更多細節。所以你的問題的答案是可能需要更多時間來使用更多的腳本標記來呈現頁面。 –

+0

我覺得解析多個js文件會比較慢,即使它們被緩存了,我也沒有任何可以引用的東西。謝謝。 –

2
  1. 結合您所有的JavaScript文件合併爲一個大文件(從而減少向服務器發出請求的數量),並且它的名稱設置爲類似「application_234234.js」;該數字表示您最近一次更改文件並幫助瀏覽器知道這是一個新文件(因此在更改時不會緩存)。
  2. 添加一個Expires或一個Cache-Control Header(將它設置在將來很遠的地方)。由於每次修改文件名都會發生變化,因此您不必擔心。
  3. 最後也是最重要的一點,壓縮和gzip JavaScript文件。

這些都是一些重要的建議,但瞭解更多有關最佳做法:http://developer.yahoo.com/performance/rules.html

+0

我嘗試實踐這些。我們正在使用運行時組合工具,該工具在我們的Web服務器上運行,以按照請求合併文件。我的團隊在部署之前合併/縮小文件有很多推遲因爲我們必須使用的工具使我們很難用本地進行開發。 –

+0

我建議你的團隊還應該設置「開發」環境,在這個環境中,文件不會縮小或壓縮成一個文件。我想這會讓你們的生活更輕鬆。 – alessioalex