提昇網站使用者體驗與轉換策略:全端網站速度優化

當網站速度讀取超過 3 sec 會降低 40% 的轉換成效


有效提升網站速度有感的可行方法

  • 全站 AMP 網頁:使用 AMP 外掛
  • 伺服器端渲染(SSR,Server Side Rendering)
  • 免費與付費 DNS
  • CDN
  • Nginx+FastCGI Cache+PHP7
    • Nginx 處理靜態內容(Static Content)的效能為 Apache 的 2 倍
    • FastCGI 快取讓 PHP 回應時間更快
    • PHP 7.3 是 PHP 5.6 速度的 3X
    • 未來即將發佈的 PHP 7.4 & 預載功能
  • 資料庫查詢快取
    • Redis Cache 可以暫存資料庫查詢結果、減少資料庫查詢浪費的時間
    • Redis 有兩種:PHPRedis(C 語言撰寫)&PRedis(用 PHP 撰寫)
    • 請用 PHPRedis:速度是 PRedis 的 6X
  • 減少建立 HTTPS 連線耗時
    • 0-RTT(Zero Round Trip Time Handshake)
  • 使用 HTTP/3:平均提昇 8-13% 網頁載入時間(如果主機有支援的話)
  • PHP-FPM Workers
    • PHP-FPM Workers 就像大賣場收銀員,收銀員越多的話,結帳速度越快(尤其是電子商務類型網站,絕大部分是無法快取的。試想,上一個人的結帳資料,實際上應該沒有辦法在下一個人的結帳情況中使用。)
  • Brotil 文字檔案壓縮:比 Gzip 壓縮再減少 26% 檔案大小
  • Apache / Nginx Pagespeed 模組:
    • 優化傳輸頻寬(過濾)
    • 讓 Pagespeed 模組來幫你執行網頁速度最佳化的粗活
    • 為什麼不用 WP Super Cache 或 WP Rocket 作為速度最佳化的外掛?
      • Ans:主要是 PHP 語法的執行速度還是比 C 語言慢
  • 資料庫查詢最佳化:用 InnoDB,不要用 MYISAM
  • 主從式資料庫架構(Master-Slave Database Replication)
  • Plugins 設定最佳化
    • 使用程式寫的好的外掛
    • 不要用來路不明的外掛
    • 正確使用外掛設定
    • 將 Plugins 移除乾淨
  • 卸載非必須檔案(外掛擁有一些平常不大使用到的設定,建議關閉或移除)
  • 卸載 WP 累贅的功能
  • 關閉 WP 排程工作(WP cron jobs)
    • 最佳的作法是不要使用 WP 來做排程工作:改由「作業系統」來排程工作
    • 安裝 Cron 管理外掛來刪除不必要的排程工作
  • 找出速度瓶頸 New Relic:測試速度瓶頸,如果無法衡量速度,也無從有優化的方向。