2010-03-01 179 views

回答

21

刪除/最小化服務器端的瓶頸。爲此,請使用Xdebug或Zend Debugger之類的分析器來查找應用程序執行的代價高昂且運行緩慢的情況。儘可能實現緩存。使用OpCode緩存。如果這仍然不夠快,考慮投資更多的CPU或RAM或SSD(取決於您是CPU,IO還是內存綁定)

對於一般服務器/客戶端優化,請參閱Yahoo YSlow! User Guide

它基本上概括起來到:

  1. 儘量減少HTTP請求
  2. 使用內容傳送網絡
  3. 添加過期或者緩存控制頭
  4. Gzip已零部件
  5. 將樣式表放在頂部
  6. 將腳本放在最下面
  7. 避免CSS表達式
  8. 使JavaScript和CSS外部
  9. 減少DNS查找
  10. 壓縮JavaScript和CSS
  11. 避免重定向
  12. 刪除重複的腳本
  13. 配置的ETag
  14. 讓AJAX可緩存
  15. 使用GET進行AJAX請求
  16. 減少DOM元素的數量
  17. 沒有404
  18. 減少餅乾大小
  19. 使用Cookie的免費域名爲組件
  20. 避免使用濾鏡
  21. 不要放大圖像在HTML
  22. 讓小的favicon.ico並且可緩存

另請參見下面的評論作出了貢獻,因爲它們包含一些一其他用戶的附加有用信息。

+3

還檢查了谷歌」的PageSpeed HTTP:/ /code.google.com/speed/page-speed/是YSlow的一個很好的替代/補充,也是一個Firebug插件。它捕捉到YSlow不能做的一些事情,反之亦然。 – 2010-03-01 22:29:16

+1

還有一件事:如果您控制足夠的服務器來安裝額外的插件並具有足夠的RAM,則使用內存中會話。 memcache插件包含一個會話處理程序。 http://php.net/memcache – Powerlord 2010-03-01 22:31:47

+1

很好的答案。所有這些事情都在這個(優秀的)雅虎文章中有更詳細的解釋:http://developer.yahoo.com/performance/rules.html – 2010-03-01 22:34:20

3

在嘗試進行任何優化之前,首先需要能夠配置文件,獲取Firefox的FireBug。然後你可以運行一些分析,告訴你如何使用YSlow。你應該做的基本事情是列出here

2

這裏有一些 「最佳實踐」 的事情:

  • 緩存CSS,JavaScript,圖片等
  • 縮小JavaScript文件。
  • gzip內容。
  • 儘可能在頁面底部放置指向JavaScript文件,JavaScript代碼和CSS文件的鏈接的鏈接。
  • 只加載需要的東西。
  • 對於現有的網站,在你做任何這些事情之前,要確定你的瓶頸在哪裏,像Firebug這樣的工具,以及其他人提到的YSlow(我強烈推薦這個工具)。
2

有兩個方面優化的時候,你可以關心,:

  • 服務器端:重要的是產生的輸出中更快
  • 客戶端:重要的是讓所有的有顯示得更快。

注意:作爲開發人員,我們經常首先考慮優化服務器端......在大多數情況下,這隻佔頁面加載時間的不到10%!


在服務器端,你通常要:

  • 曲線,以確定什麼是長
  • 優化您的SQL查詢,並減少其數量
  • 使用緩存

欲瞭解更多信息,你可以看看我前一段時間給這個問題的答案:Optimizing Kohana-based Websites for Speed and Scalability


在客戶端,最大的收益一般是通過實現:

  • 減少HTTP請求的數量 - 最簡單的方法是減少的JS/CSS /圖像文件的數量,由將幾個文件合併成一個文件
  • 壓縮CSS/JS/HTML,例如使用Apache的mod_deflate

有關,對Yahoo's Exceptional Performance了很多偉大的東西:他們已經發布了大量的good pratices和工具,如yslow

2

我能想到的最簡單的選項是:

  1. Gzip已(X)HTML,所以壓縮文件應該更迅速地向用戶
  2. 到達縮小的CSS
  3. 縮小的JS
  4. 使用緩存儘可能
  5. 使用內容傳遞網絡
  6. 使用工具,如yslow識別瓶頸和進一步的建議
+0

@bn的確的編輯,以糾正。謝謝=] – 2010-03-01 23:11:57

2

肯定想看看緩存,因爲往返數據庫是昂貴的。 also,minify JS

0

要減少網絡流量,可以縮小靜態文件(如CSS和Javascript),並對生成的內容使用gzip壓縮。您也可以嘗試使用optipng等工具來縮小圖像的大小。

但是,要採取的第一步是實際分析需要花費的時間 - 無論是通過網絡發送位,還是實際生成要發送的內容。如果需要一分鐘來生成每個HTML頁面,那麼將CSS文件縮小10%是沒有意義的。

-3

負載平衡將有助於減少巨大的加載時間。

+2

不,幾乎所有情況下都不會。 – MarkR 2010-03-01 22:32:23

1

第一個優化是:決定它是否緩慢,如果不是,請不要打擾。

這比聽起來更棘手,因爲它不像測試桌面應用程序或遊戲。如果在目標硬件上播放遊戲,遊戲速度會很慢,幀速率太低。這很容易衡量。

一個網站更棘手,因爲作爲開發人員,您可能正在使用本地測試系統和非常快速的網絡。即使使用登臺/系統測試服務器,您仍可能仍在本地網絡中。即使你的生產服務器很可能在同一大陸。

對於很多用戶來說,情況可能並非如此。

因此其存在的選項有:

  • 找出通過詢問用戶,是否覺得它是慢
  • 模擬高延遲的環境和自己(或您的QA團隊)測試
  • 猜測

後者不建議。

一個比你的雅虎網站性能書(這是一本你可以購買的書)更不用提的很多HTTPS選項。大多數處理重要數據的Web應用程序主要或完全通過HTTPS運行,這更改了遊戲規則。記住要啓用所有測試。

2

安裝螢火蟲和插件的PageSpeed如下 所有的PageSpeed指令(至可能的),而且要快樂 http://code.google.com/intl/it/speed/page-speed/

反正在我的經驗中最重要提示優化是HTTP請求的數量減少到最低限度?

0

不要在代碼中使用空格。

1

前面已經提到的,你可以使用YSlow的或的PageSpeed火狐延期。但是您也可以使用GTmetrix,這是一款使用這兩種工具掃描頁面的在線服務。

特點我喜歡/用途:

  • 柔軟,清潔,可用presention
  • 與其他網頁進行比較。看看你的朋友/競爭者在哪裏真的很有趣。

(順便說一句,我沒有相關gtmetrix!)