本章將略述能幫助您提高 web 應用程序性能的最佳實踐。web
每一個 HTTP 請求都有開銷,包括查找 DNS、建立鏈接及等待響應,所以削減沒必要要的請求數可減小沒必要要的開銷。要減小請求數: 數組
mod_concat
模塊。若是 httpServer 是 Apache,用 pack:Tag 做爲 JSP 標籤庫來合併 JavaScript 和樣式表文件。(pack:Tag 是一個 JSP-Taglib,可縮減、壓縮及合併資源,如 JavaScript 和 CSS,並將它們在內容或普通文件中緩存。) 只呈現須要的組件;其他可等待。最好不要一次呈現太多組件。 瀏覽器
某些狀況下,可以使用後置加載。因爲瀏覽器可視區域外的組件能夠後置加載,當這些組建進入可視區域不久後,初始呈現就會失效。 緩存
有些 JavaScript 能夠在 onload 事件後後置加載,如 JavaScript 中初始呈現後拖動某個元素。 服務器
經過前置加載組件,能夠利用瀏覽器的空閒時間請求未來會用到的組件(如圖像、樣式和腳本)。當用戶訪問下個頁面時,若是大多數組件都已在緩存中加載,那頁面加載會快得多。 cookie
有兩種前置加載:網絡
腳本可能會產生問題,由於它們可能會阻礙並行下載。當下載腳本時,瀏覽器不會再啓動其餘下載 — 即便那些位於不一樣主機。將腳本,如樣式表,放在底部,以保證它們在其餘下載完成後再下載。 app
也可使用延時腳本,這隻有 Internet Explorer 支持。DEFER
屬性表示腳本不含 document.write()
。這就告訴瀏覽器他們能夠持續呈現。 webapp
當瀏覽器發出對靜態圖片的請求,並隨之發送 cookie 時,服務器不會使用那些 cookie。因爲這些 cookie 只會形成沒必要要的網絡流量,確保用無請求來請求靜態組件。而後使用子域和主機保存這些靜態組件。 工具
現實世界中使用外 部文件一般會使頁面運行更快,由於 JavaScript 和 CSS 文件被瀏覽器緩存。HTML 文檔內聯的 JavaScript 和 CSS 會在每次請求 HTML 文檔時被下載。這減小了須要請求的 HTTP 的數量,但增長了 HTML 文檔的大小。另外一方面,若是 JavaScript 和 CSS 在被瀏覽器緩存的外部文件中,就會減少 HTML 文檔大小,而不會增長請求數。
YSlow 根據一組高性能 web 頁面準則,經過檢查頁面上全部組件,包括由 JavaScript 建立的,來分析 web 頁面性能。YSlow 是一個集成了 Firebug web 開發工具的 Firefox 插件;它可提供提高頁面性能的建議、總結組件性能、顯示頁面統計數據並提供用於性能分析的工具。
圖 3 顯示的是 YSlow Grade 選項卡上的信息。
YSlow 的 web 頁面創建在 22 條可測試的規則基礎上,這些規則在下方按重要性和效果排列。研究顯示,按照如下規則,web 頁面響應時間可提高 25% 到 50%:
GET
進行 Ajax 請求。