有在使用CMS系統(例如:WordPress、Drupal、Joomla等)架站的網友可能都聽前輩說過一句話:盡量少用外掛會讓你的網站載入快很多,也就是說像我要讓我的網站有Lightbox的效果時,我可以手動去加入jQuery的程式碼,也可以直接安裝外掛,這兩種方式都可以達到同樣的效果,但對於網站載入的速度卻會造成蠻大的差別的
為何使用外掛會讓網站變慢?
為什麼說使用外掛會拖慢網站的速度呢? 同樣的功能憑什麼使用外掛會讓網站變慢,自己手動加到網站上就影響較小? 難道是傳說中懲罰懶人的機制!? 其實都不是。使用外掛會導致網站變慢的原因其實很簡單,因為大部分CMS系統的外掛都是採用Hook的機制去撰寫的,也就是說CMS系統本身會提供一系列API給開發者使用,可以把它看成是物件導向裡面的事件,當CMS系統發生某事時,可能要執行某些動作,例如:
當發表一篇文章時,要把文章的網址傳送到我的信箱裡,則必須要使用一個發表新文章的API,然後指定當發表文章時會觸發「寄信」的函式,換句話說就是「當發新文章事件發生時」,要「寄信」
凡是在CMS裡開發外掛,幾乎都是透過這類方式設計的,也就是說當發生一件事情時,並非直接由外掛來工作,而是統一由系統來進行管理,而這就會導致外掛的效能變得比較低,因為多經過了CMS系統這道程序,而不是像手動寫入那樣直接發生
在舉一個例子:很多人都喜歡使用Google的分析服務,然後又不喜歡手動去修改佈景檔案,把分析用的程式碼加到佈景中,所以會去安裝一些外掛來幫你快速的安裝分析功能的程式碼,這種作法就會在無形中拖慢網站速度,因為CMS的管理,但如果手動加入到佈景檔案中,就不會有太大的影響
要如何才能讓網站速度加快?
要讓網站速度加快的方法很多,常見的就是啟動Gzip、用好一點的主機、圖片要壓縮…. 等等,但因為這篇文章是在講外掛的部份,所以我就針對外掛來做說明
- 能夠不用外掛達到的功能就盡量不要用,例如Google分析、燈箱特效、推文按鈕等等
- 沒有使用到的外掛一定要移除掉,即使沒有啟動也會影響到網站的速度
第一點的原因剛剛有講過了,就是因為外掛是由CMS系統管理的,多了一道程序會讓網站變慢,但第二點呢?我的外掛又沒有啟用為何也會影響到網站? 簡單來講就是CMS系統本身會去掃描你的網站有安裝哪些外掛,然後判斷他是否有啟用,每種CMS系統在檢查安裝外掛的程序都不同,而影響也就不同,以WordPress來講,我的感想是影響很大,前一陣子我網站有將近十個未啟用外掛沒有移除掉,後來看到有人說會影響就把他們都刪掉,過了一週很驚訝的發現Google網站管理員工具裡面我的網站載入速度瞬間快了10秒,我猜測這可能就是因為WordPress會在訪客造訪網站時檢查你的外掛根目錄裡面有哪些外掛,然後去判斷哪些有啟動、哪些沒啟動,有啟動的在進行相應工作,因此檢查到一堆未啟動外掛就會讓網站變慢
示意圖▼▼
大大說的中肯~
不過 Plugins 又是個好東西……
根據 PHP 優化,以下會造成程式變慢……
1. 使用 function
2. 使用 define
恩,結果 WordPress 要使用 Hook 都是用了很多上面的東西(望
然後歡樂的 loop 也必須在每個 Hook 裡面跑一次……
還要常常用 function_exists 檢查~
結論:用Plugins會「超慢」
不過……現在CPU夠威,適量使用很OK的~
補充:WordPress不管你有沒有Active都會把Plugin Load進來喔(所以 is_plugin_active 還啥的才有效果)
然後 Scan Plugin 是用 file_get_contents 再去做 String 的解析……
不過 WordPress 他們都有做好不錯的 Cache 處理(不過主機的 RAM 就要……)
* Cache 處理是用 Object 方式儲存(一開始就全部快取好,之後程式運作不斷重複讀取)
有Memcached更好,不過WordPress沒有原生內建支援就是了 Q^Q
幫你的回應按讚XDD
適量就好
很多人一個網站裝了40多個外掛
功能就只是幫他加入廣告、分析程式碼而已
整個拖慢系統速度
好長的回覆!@w@
呵呵~
我前幾天把一些外掛移除掉之後,還真的快了很多!
快取外掛我 只裝了一個!呵呵!
快取外掛也只能裝一個XDD
簡單來說就跟瀏覽器的套件功能一樣吧!
將整個瀏覽器比喻成WP程式,光瀏覽器本身就會耗掉一點電腦的系統資源了
如果安裝太多套件,會讓消耗瀏覽器的資源,這樣瀏覽器開奇摩的時候就會跑的慢又容易當機
嗯
可以這樣解釋~
我啟用了16個外掛 這不算多吧?~
還可以~
不過能的話就盡量把「非必要」外掛拿掉
必要的就裝吧~