高性能網站14條——讀《高性能網站建設指南》


雖然不是做前端開發的,但是了解一些也是有用的。例如js腳本和css腳本是應該放在頁面頂部嗎?…

規則1較少HTTP請求

性能黃金法則:只有10%-20%的最終用戶響應時間花在了下載HTML文檔上。其余的80%-90%時間花在了下載頁面的所有組件上。

實現技術:

  • 圖片地圖(Image map):當在導航欄或者其他超鏈接中使用多個圖片時,使用圖片地圖在一個圖片上關聯多個URL,可以減少HTTP請求加速頁面。
  • CSS Sprites:將多個圖片合並到一個單獨的圖片中,然后使用CSS的background-positon屬性為span,div等設置背景圖片。通過合並圖片減少了HTTP請求,並且比  圖片地圖更加靈活。
  • 合並腳本和樣式表:如果頁面引用了多個樣式表和腳本那就需要合並了,最好一個頁面不多於一個腳本和樣式表。
規則2使用內容發布網絡CDN

CDN是一組分布在多個不同地理位置的web服務器,可以更加有效的向用戶發布內容。

規則3、添加Expires

我們利用瀏覽器的緩存來改善網站性能,Web服務器使用Expires頭來告訴web客戶端它可以使用一個組件的當前副本,直到指定的時間為止,例如。   clip_image002

兩外還可以用Cache-Control的max-age來指定組件緩存的秒數。例如:

clip_image004

文件名:添加緩存后,那么相應的組件更新時用戶也獲取不到新版本,為了解決這個問題可以在文件名中添加版本號。

規則4:壓縮組件

通常的做法是用gzip壓縮腳本和樣式表。

規則5:將樣式表放在頂部

為了避免白屏現象,請使用LINK標簽將樣式表放在文檔頂部的head中,這樣無論頁面是在新窗口打開、重新加載還是作為主頁,頁面都是逐步呈現的。

規則6:將腳本放在底部

HTTP1.1規范檢疫瀏覽器從每個主機名並行下載兩個組件,這樣可以提高性能。但為了保證腳本正確的執行順序,下載腳本時

不是並行的。因此腳本對web頁面會有以下影響:

  • 腳本會阻塞對其后面內容的呈現;
  • 腳本會阻塞對其后面組件的下載。

將腳本移到頁面底部可以加速web頁面。

規則7:避免是用CSS表達式

CSS表達式允許動態設置CSS屬性,例如image

問題是表達式求值的頻率過高,除了頁面加載和改變大小外,當頁面滾動、鼠標移動時都會重新求值。

解決方式:

  • 一次性表達式:可以將上面例子中計算背景色的部分提取到js中,然后在css中調用一次該方法。
  • 事件處理器:可以將需要計算的部分提取到單獨的方法中,並寫明調用該方法的事件,例如window.resize等等,這樣就能減少不必要的求值。
規則8:使用外部Javascript和css

如果純粹比較javascript和css的內聯外聯的話,可能內聯會快一些。但在實際應用時,由於外聯文件可以被瀏覽器緩存起來,因此使用外部文件會產生較快的頁面。

規則9:減少DNS查找
DNS將主機名映射到IP地址上,當用戶請求一個主機名之后,DNS信息會留在操作系統的DNS緩存中來提高性能。通過使用Keep-Alive和較少的域名來減少DNS查找。
規則10:精簡Javascript

精簡是從代碼中移除不必要的字符以減小其大小,進而改善加載時間。常用的javascript精簡工具有JSMin,DojoCompressor等。

規則11:避免重定向

重定向用於將用戶從一個URL重新路由到另一個URL,實現重定向可能有很多原因,包括網站重新設計、跟蹤流量、記錄廣告點擊、建立便於記憶的URL等。但實際上重定向會使頁面變慢,下面是幾種常見的替代方案:

  • URL結尾斜線:如果網站包含目錄並且使用了自動索引,那么當URL結尾缺少應有的斜線時,可能會發送重定向。
  • 跟蹤內部流量:重定向經常用於跟蹤用戶流量的流向。也可以用Referer日志來跟蹤流量,避免給向用戶發送重定向,從而改善響應時間。
  • 美化URL:為了向user展現便於記憶的URL,有時需要重定向。其實可以利用Alias,mod_rewrite和直接鏈接代碼等來避免。
規則12:移除重復腳本

由於團隊大小和腳本數量的影響,網站中的腳本是可能重復的,這可能導致不必要的HTTP請求和執行Javascript時浪費時間。要避免重復使用腳本,可以在模板系統中實現腳本管理模塊,處理腳本的依賴性和版本。

規則13:配置或移除ETag

ETag(Entity Tag)實體標簽,是Web服務器和瀏覽器用於確認緩存組件的有效性機制之一。它是唯一標識了一個組件的特定版本的字符串,格式約束是該字符串要用引號引起來。例如:

image

如果網站時放在同一台服務器是沒有問題的,但是如果使用了服務器集群,則組件的下載次數會增多,導致性能下降。

規則14:使用Ajax可緩存

確保Ajax請求遵守性能指導,尤其應具有長久的Expires頭。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM