WordPress速度改善懶人包:
速度優化是經營網站重要課題,除了攸關使用者體驗,過慢的網站速度也會影響SEO(Google說明:行動版網頁讀取速度與SEO,網頁速度、使用者體驗與SEO),這篇文章分享的是我進行WordPress網站速度優化採取的手段。因我無網站開發相關技能,所以下面的方式不會涉及WordPress程式或外掛的客製調整。文章內容:
在進入正題之前有三個提醒:要定期review當前安裝外掛的必要性、要慎選佈景主題、速度不是唯一,前兩點跟網站讀取速度有關。
- 外掛品質與數量:安裝太多外掛或設計不良的外掛都會拖慢WordPress網站速度,建議定期檢視是否安裝沒必要的外掛,如果外掛只是為了讓網站看起來很炫,提供的功能對USER跟管理者來說都沒意義,建議移除。外掛是拖慢WordPress速度的一大因素
- 慎選佈景主題:設計不良的佈景主題也會拖慢網站速度,因為它決定了網站前端顯示的架構,購買主題時建議找一下相關評論、用工具測看看demo頁面的讀取速度,這是規劃WordPress網站速度優化的重要項目
- 速度不是唯一:網站的價值不在於秒開,而是內容品質。雖然優化速度很重要,但我建議將內容品質放在第一位,為了一點點的速度提升犧牲內容品質是捨本逐末,對SEO也沒幫助。如果網站經營的目的只是優化速度,那就….不要上任何內容跟圖片就好了
主機挑選:
WordPress有很多方式可以優化效能,但是….主機本身體質不佳的話再怎樣調整都事半功倍,在搜尋主機服務時要仔細評估,除了使用者的心得、主機廠商提供的功能,主機位置也很重要。如大多數的訪客來自台灣,建議優先選擇有提供亞洲地區主機(通常是東京或新加坡)的虛擬主機商,例如SiteGround或Cloudways。
除了主機的調教,有的主機商還還會推出對應外掛程式或CDN服務,CDN服務等等說明。以SiteGround為例,它有專屬外掛SG Optimizer,提供了許多前端優化功能,不過….使用這個外掛需搭配它們的主機,如主機不是SiteGround,使用這外掛很可能出現問題。
總之….WordPress使用的主機對網站讀取速度有深遠的影響,建議挑選主機商時要仔細搜尋相關評論,不要一味的價格導向。就我個人的經驗,SiteGround(已退出台灣市場)或Cloudways(本站使用的主機,月付制)的效能都是可接受的。
相關文章:
Cloudways提供免費三天試用,註冊時點擊「Got a Promo Code?」後輸入優惠碼:WPSEO30,前兩次付款享七折優惠。
圖片優化:
圖片優化也是WordPress網站速度優化很重要的一部分,大體可分為兩點:
- 圖片大小:也就是圖片解析度與圖片品質
- 圖片的中繼 / 後設資料:圖檔其實存有許多額外資訊,例如拍攝的時間、經緯度、機型、鏡頭等等,大多存於EXIF檔,這些資料會增加圖檔大小但對USER與SEO沒有意義,建議編輯圖片時刪除這些資料
- 圖片檔案類型:請以JPG為主,盡量不要用檔案比較肥的PNG或BMG,除非有特殊需求(例如透明底)
雖然現在的WordPress佈景主題大多會設計成上傳圖片後,根據版型裁切多種尺寸的圖片,前端再讀取對應的尺寸而不是原始大圖,但我還習慣先裁切圖片再上傳,順便刪除圖片的中繼 / 後設資料。免費軟體可參考IrfanView或Photo Scape X(使用說明),這兩套軟體都可縮圖、刪除圖片的中繼 / 後設資料、批次變更圖檔名稱。
至於要不要採用新一代的圖片格式,例如WebP(Google的說明)?我的建議是先處理圖檔大小跟中繼 / 後設資料後再評估是否採用WebP。雖然WebP可以縮小圖檔尺寸,但是佈署上不是那麼簡單,需上傳圖檔後有工具產出WebP的檔案,而且還要判斷USER端的瀏覽器可否支援,如不支援(例:Safari)就要提供一般的圖檔(JPG、PNG)。我是沒用WebP來加速讀取速度,有興趣的話請自行Google。
速度優化相關外掛:
五花八門的WordPress速度優化外掛也是你的好幫手,知名的有WP Rocket(官網|教學文章)、WP Super Cache、WP Fastest Cache等等,提供的速度優化功能不外乎下列功能:
- 產出靜態HTML檔案:利用這個功能組好HTML檔案,不用每次USER要求網頁資訊時系統都要重新撈取資料、湊成HTML,這就是所謂的產出「網頁HTML的靜態快取」
- 縮小HTML檔案(Minify the HTML Output):縮小輸出的HTML檔案(例如去除無用的字元、空格、符號),減少傳輸HTML的大小
- 縮小JavaScript(Minify JavaScript Files):縮小輸出的JavaScript檔案,減少傳輸JavaScript的大小或請求數目
- 合併JavaScript(Combine JavaScript Files):就是合併JavaScript,減少讀取網頁所需的JavaScript數目
- 延遲JavaScript(Defer Render-blocking JS):有時網頁需先讀取特定的JavaScript才能得取其他所需檔案,這時網頁的顯示速度就會被這些檔案影響。但這種檔案可能對網頁一開始的顯示沒影響,可以延遲讀取它們,別被這些檔案卡住網站讀取速度
- 縮小CSS(Minify CSS Files):跟縮小JavaScript檔案的用意一樣
- 合併CSS(Combine CSS Files):跟合併JavaScript檔案的用意一樣
- Lazy Loading:這用意就是網站只要讀取前面幾張圖片後網站就可以呈現,不用等到讀取完所有圖片才會正常顯示網頁;至於一開始沒被讀取的圖片,等USER需要看到它時就被讀取了
- 要仔細測試在桌機跟行動裝置上可否正常顯示
- 要仔細測試縮圖是否可正常顯示,例如小工具縮圖、輪播縮圖、Youtube影片縮圖、Gallery縮圖
- WordPress 5.4版起內建Lazy loading,可於Chrome、Edge順暢運作(技術文件)
- 優化資料庫:優化資料庫、清除裡面的垃圾資料,讓資料庫的存取更有效率
- GZIP傳輸:簡而言之,就是server先壓縮要傳輸的html檔之後,user的瀏覽器收到之後會解壓縮,藉此縮小需要傳輸的檔案大小。有的快取外掛會提供這功能,建議先詢問虛擬主機的客服要怎樣佈署這個
相關外掛:
我用過蠻多WordPress速度優化外掛,這邊介紹三個:
- SG Optimizer(限定SiteGround主機):這外掛只能用在SiteGround主機,提供上面所有速度優化功能
- WP Rocket(只有付費版,官網|教學文章): 非常知名的WordPress速度優化外掛,提供上述所有優化功能,外加優化資料庫、DNS Prefetch,是這三個功能最完整的
- WP Fastest Cache(免費版):這是簡單易用的WordPress速度優化外掛,提供上述所有優化功能,除了Lazy Loading
注意事項:
使用WordPress速度優化外掛要非常仔細的測試,建議開啟無痕視窗、桌機跟行動裝置版型都要仔細檢查。為何強調開啟無痕視窗呢?大多數的快取外掛都會讓登入的使用者看到原始資料而非快取資料,可是大多數的使用者不可能登入你的網站後台、看到的是快取資料,所以測試的重點是確保使用者看到的快取資料是正確的。要嘛….登出後台再做測試,要嘛測試時切換到外掛的開發模式,不然就是在沒有登入資料的瀏覽器測試(例如無痕視窗),最方便的當然就是無痕視窗了。
但是….如果更新程式或版型時,要注意原始資料是否正確,也就是….要在登入狀態的瀏覽器測試。其實佈署快取外掛有時很麻煩,因為有時候是要確認快取後的資料是否正確(用無痕視窗),但也可能需要確認原始資料是否正確(用登入狀態的瀏覽器)。結論就是:都要測,出問題要判斷到底是原始資料有問題,還是快取資料出現錯誤?
另一點是通常好的外掛在你更新內容時都會清除舊資料,以免USER看到舊的快取資料,設定時要確認如何實現這一點。另一點就是….這些外掛大多需要調整.htaccess的設定,安裝好之後可能會請求相關編輯權限,就允許吧。
最後….請勿重複安裝類似的外掛,以免造成衝突!
AMP:
我已經不再使用AMP功能,詳細原因及停用方式請參考SEO小教室|AMP頁面移除指南:緣由、執行方式、重點觀察指標、排名變化
AMP(Accelerated Mobile Pages,加速行動版網頁)是Google於2016年九月中全面上線技術,簡而言之就是篩選掉不必要的JavaScript、CSS與版位,加上Google本身的Cache系統,讓以行動裝置進行Google搜尋的使用者可以更快開啟網頁。
雖然使用AMP技術可以加快網頁在行動裝置的讀取速度,但這是有代價的。AMP網頁可使用的CSS跟JavaScript有不少的限制,如果對版型樣式要求很高,或者網頁很依賴JavaScript創造使用者互動功能、進行資料串接、佈署廣告或追蹤碼,那AMP網頁可能無法達到你對網頁功能的要求。
再者….當USER點擊搜尋結果的AMP網頁是連到存於Google系統的AMP頁面,不是原始主機端的資料,而這兩者間的內容是有落差的。雖然Google更新資料蠻快的,但是Google系統的AMP頁面通常不會在你調整頁面內容後立刻更新,如不能接受USER點了Google搜尋結果後看到舊版內容,就要仔細衡量是否佈署AMP。
佈署AMP網頁是改善WordPress網站速度的選項之一、有現成外掛可快速完成(我是用AMP for WP),重點是要不要佈署,相關文章可參考:
CDN:
CDN的全名是Content Delivery Network(內容傳輸網絡),最基本的原理:
CDN服務商將網站所需的資源(大多是靜態資源,例如圖片、CSS、JavaScript等等)存放在它的資料中心,USER讀取資料時,根據系統設計優化傳輸路徑、讓USER可盡快由它們的資料中心取得檔案;部分CDN服務會在它們那邊儲存HTML(就是動態資源)
聽起來很玄,白話文就是如果你的資料中心在台灣,美國的使用者存取網頁的速度會受台灣 – 美國間的網路傳輸速度影響,如果採用在美國有資料中心的CDN服務,USER便能由美國取得資料、不用繞道台灣。
要不要用CDN的評估項目之一便是….你的資料中心離主要訪客遠嗎?如主要訪客來自台灣,而你的資料中心在香港、台灣或日本等東亞區域,那就不一定要採用CDN。
這種運作模式還有一個好處:減輕原始server的負擔。原本它要負責回應所有的網頁資源請求,佈署CDN之後大半的資源是由CDN傳給使用者。以上兩點只是CDN基本服務之一,部分CDN會提供其他附加服務,這邊就不另外說明。
雖然CDN運用的當可以優化網站傳輸速度,但它的潛在問題也很煩人:
- 有的CDN效能有問題,佈署之後反而拖慢資料傳輸速度
- 因為部分或全部資料是來自於CDN而非原始主機,偶爾會因CDN跟原始主機互動不良產生的問題,這時很可能要詢問兩邊的客服到底是誰的問題,這很煩!
- 因為部分的資料來自於CDN而不是原始的主機,如果網頁資料有更新,可能需要purge資料(就是強制清除CDN資料或宣告那些資料過期了)才能讓USER存取到最新資料。
- 有的CDN服務提供WordPress外掛,可讓你更新資料時自動purge(例如Key CDN)
- 有的沒有(例如Stackpath),這時要到CDN服務後台手動purge,其實蠻煩的
- 結論:
- 在優化網站速度時,CDN確實是一個選項,但需要仔細評估,它潛在的後遺症其實很煩人
- 如果網站大多數的訪客離網站的資料中心不遠(屬於同一個地理區域)或者網站的server根本沒有訪客過多產生的效能問題,佈署CDN是自找麻煩
我在自己的WordPress網站上曾利用Jetpack、KeyCDN跟StackPth佈署CDN,詳情請參考WordPress|CDN佈署簡介與服務分享 – Jetpack、StackPath、KeyCDN,會更詳細的說明使用方式與心得。
心得:
雖然WordPress比較難像客製網站一樣隨心所欲的優化網頁讀取速度,還是有不少手段可以提升網站效能、優化使用者體驗,只是在執行時要仔細測試,以免形成意外的問題,最重要的是….要仔細釐清各種方式的優缺點,千萬別人云亦云結果搞掛網站。
網頁讀取速度優化是SEO的環節之一,如想打造SEO friendly的WordPress系統,可參考WordPress|內容網站SEO懶人包 – 網域與索引、重點功能、內容編輯等七大主題教學。
延伸閱讀:
WordPress懶人包:
- WordPress架站|註冊網域、安裝網站 / 外掛、設定調整等9大步驟教學
- WordPress主機|重點功能要求、主機費用評估、五大主機簡介
- WordPress推薦外掛|Yoast SEO、WP Rocket、AMP for WP等10大外掛
- WordPress佈景主題|主題市集ThemeForest挑選、購買、安裝佈景主題教學
WordPress佈景主題:
WordPress外掛:
- Yoast SEO|WordPress必裝SEO外掛設定教學
- Redirection|WordPress必裝301轉址外掛設定教學
- WP Rocket|WordPress必裝快取外掛設定教學與注意事項
- WPForms|WordPress必裝表單外掛付費版教學
- AMP for WP|WordPress上線AMP網頁推薦外掛設定與使用心得
- Jetpack|超多工WordPress推薦外掛設定教學