【CMS】使用外掛為何會讓瀏覽速度變慢、伺服器效能變差?

有在使用CMS系統(例如:WordPress、Drupal、Joomla等)架站的網友可能都聽前輩說過一句話:盡量少用外掛會讓你的網站載入快很多,也就是說像我要讓我的網站有Lightbox的效果時,我可以手動去加入jQuery的程式碼,也可以直接安裝外掛,這兩種方式都可以達到同樣的效果,但對於網站載入的速度卻會造成蠻大的差別的

為何使用外掛會讓網站變慢?

為什麼說使用外掛會拖慢網站的速度呢? 同樣的功能憑什麼使用外掛會讓網站變慢,自己手動加到網站上就影響較小? 難道是傳說中懲罰懶人的機制!? 其實都不是。使用外掛會導致網站變慢的原因其實很簡單,因為大部分CMS系統的外掛都是採用Hook的機制去撰寫的,也就是說CMS系統本身會提供一系列API給開發者使用,可以把它看成是物件導向裡面的事件,當CMS系統發生某事時,可能要執行某些動作,例如:

當發表一篇文章時,要把文章的網址傳送到我的信箱裡,則必須要使用一個發表新文章的API,然後指定當發表文章時會觸發「寄信」的函式,換句話說就是「當發新文章事件發生時」,要「寄信」

凡是在CMS裡開發外掛,幾乎都是透過這類方式設計的,也就是說當發生一件事情時,並非直接由外掛來工作,而是統一由系統來進行管理,而這就會導致外掛的效能變得比較低,因為多經過了CMS系統這道程序,而不是像手動寫入那樣直接發生

在舉一個例子:很多人都喜歡使用Google的分析服務,然後又不喜歡手動去修改佈景檔案,把分析用的程式碼加到佈景中,所以會去安裝一些外掛來幫你快速的安裝分析功能的程式碼,這種作法就會在無形中拖慢網站速度,因為CMS的管理,但如果手動加入到佈景檔案中,就不會有太大的影響

要如何才能讓網站速度加快?

要讓網站速度加快的方法很多,常見的就是啟動Gzip、用好一點的主機、圖片要壓縮…. 等等,但因為這篇文章是在講外掛的部份,所以我就針對外掛來做說明

  1. 能夠不用外掛達到的功能就盡量不要用,例如Google分析、燈箱特效、推文按鈕等等
  2. 沒有使用到的外掛一定要移除掉,即使沒有啟動也會影響到網站的速度

第一點的原因剛剛有講過了,就是因為外掛是由CMS系統管理的,多了一道程序會讓網站變慢,但第二點呢?我的外掛又沒有啟用為何也會影響到網站? 簡單來講就是CMS系統本身會去掃描你的網站有安裝哪些外掛,然後判斷他是否有啟用,每種CMS系統在檢查安裝外掛的程序都不同,而影響也就不同,以WordPress來講,我的感想是影響很大,前一陣子我網站有將近十個未啟用外掛沒有移除掉,後來看到有人說會影響就把他們都刪掉,過了一週很驚訝的發現Google網站管理員工具裡面我的網站載入速度瞬間快了10秒,我猜測這可能就是因為WordPress會在訪客造訪網站時檢查你的外掛根目錄裡面有哪些外掛,然後去判斷哪些有啟動、哪些沒啟動,有啟動的在進行相應工作,因此檢查到一堆未啟動外掛就會讓網站變慢

示意圖▼▼

 

在〈【CMS】使用外掛為何會讓瀏覽速度變慢、伺服器效能變差?〉中有 10 則留言

  1. 大大說的中肯~
    不過 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

    1. 幫你的回應按讚XDD
      適量就好
      很多人一個網站裝了40多個外掛
      功能就只是幫他加入廣告、分析程式碼而已
      整個拖慢系統速度

  2. 我前幾天把一些外掛移除掉之後,還真的快了很多!

    快取外掛我 只裝了一個!呵呵!

  3. 簡單來說就跟瀏覽器的套件功能一樣吧!
    將整個瀏覽器比喻成WP程式,光瀏覽器本身就會耗掉一點電腦的系統資源了
    如果安裝太多套件,會讓消耗瀏覽器的資源,這樣瀏覽器開奇摩的時候就會跑的慢又容易當機

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料