# 頁面性能
[According to Akamai](https://www.akamai.com/uk/en/about/news/press/2017-press/akamai-releases-spring-2017-state-of-online-retail-performance-report.jsp), a **100-millisecond**?delay in page load can impact conversion rate by**7%**, while a **2-second**?delay can increase bounce rates by a whopping **103%**.

## ?頁面測試速度工具
【Webpagetest ,gtmetric, google page insight, mobile insight】
https://web.dev/measure/
https://tools.pingdom.com/
https://gtmetrix.com/
https://www.webpagetest.org/
參考:[一定要看的WordPress網站性能及速度優化建議 | WordPress大學 (wpdaxue.com)](https://www.wpdaxue.com/wordpress-performance-and-speed-optimization.html)
## 性能監控工具:
1,[Tideways](https://tideways.com/),這個是非常推薦,必殺技
注意:在面板環境安裝tideways,可能出現加載模塊不行的問題,檢查phpinfo 有沒有 extension=tideways.so ,參考 : [Install on CentOS/Red Hat/Fedora :: Documentation (tideways.com)](https://support.tideways.com/documentation/setup/installation/centos-redhat-fedora.html)
2,[Query Monitor - Debug WordPress and Improve Website Performance (kinsta.com)](https://kinsta.com/blog/query-monitor/)
## 性能提高方法:
wordpress性能優化指南:
[How to Speed Up Your WordPress Site (Ultimate 2021 Guide) (kinsta.com)](https://kinsta.com/learn/speed-up-wordpress/)
我的優化經驗3點:
```
1,要安裝 性能監控工具(如tideways),一邊測試性能,一邊觀察實際瓶頸。
2,從瓶頸出發解決核心問題,同時不能過度優化,達到基本標準則可。
3,要先治療病人,再給它蓋上外套。先解決核心性能問題,再用緩存之類。
```
優化前,用 chrome瀏覽器的 lighthouse測試一下:

顯然很多改善空間,觀察 瓶頸,首先要解決瓶頸:

**瓶頸:Reduce initial server response time**
*****
再用Gtmetrix測試一下:

**重點解決:** 首字符響應時間過長,TTFB 達 2.6秒!
**注意:** TTFB 要用相應國家地區去測試才更準確, 首要測試標準: chrome lighthouse.
*****
我們現在知道要解決的問題在于 TTFB, 那么現在就是 想辦法解決。安裝 性能監控工具,看底層 是哪里造成 這個性能問題:


如上圖所示,可以馬上看到 造成卡慢的原因:1,外部服務訪問慢的問題,2,sql執行過多的問題。解決它,然后測試看看情況。
*****
## SQL執行過多的解決方法:

**1,mysql性能優化:**
1.1 myisam 轉為 innodb,提高并發
1.2 Sql 300條太多, 要檢查是不是可以減少 ,例如檢查區塊編輯器問題。
1.3 Mysql 的自身 性能調高:

**2,加上對象緩存**
WordPress有一個內置的對象緩存[WP\_Object\_Cache](https://codex.wordpress.org/Class_Reference/WP_Object_Cache)。它于2005年推出,提供了一種自動將數據庫中的任何數據存儲在PHP內存中的方法,以防止重復查詢。
利用對象緩存:Object Cache ,是wordpress 原生的功能,參考:[什么是對象緩存以及如何在WordPress中使用它 | WordPress大學 (wpdaxue.com)](https://www.wpdaxue.com/what-is-object-caching-and-how-to-use-it-in-wordpress.html)
**Redis Object Cache** , 推薦使用這個插件,功能齊全,簡單方便,可監控性能情況。[Redis Object Cache – WordPress plugin | WordPress.org](https://wordpress.org/plugins/redis-cache/)
*****
*****
## 關于各層緩存外套(先醫治,再外套):
* 1.對象緩存。我們將在下面對此進行更詳細的介紹,但是對象緩存涉及存儲數據庫查詢,以便下次需要數據時,無需查詢數據庫即可從緩存中傳遞數據。
* 2.頁面緩存。頁面緩存涉及存儲頁面的整個HTML,以便在后續視圖中可以生成和顯示內容(包括文件和數據庫查詢),而無需WordPress每次都這樣做。
* 3.操作碼緩存。操作碼緩存涉及在每個請求之間編譯PHP代碼。為了執行PHP代碼,PHP編譯器必須先編譯代碼,然后生成可執行代碼供服務器執行。操作碼緩存已編譯的代碼。
* 4.CDN緩存。內容分發網絡(CDN)使用世界各地的邊緣服務器來存儲靜態網站文件(即CSS,JavaScript和媒體文件),以便更快地將其分發給與主機服務器地理上相距遙遠的用戶。
*****
*****
## 靜態緩存,頁面緩存
毫無疑問,對于網站來說,靜態緩存,頁面緩存 是解決性能的**最厲害的武器**,這里推薦使用WP Super Cache插件。對于開發者來說,盡量選擇功能單調簡單的插件,一方面提高性能,另一方面方便代碼修改。我們只需要頁面靜態功能。(同時這個插件有CDN功能)
[WordPress緩存插件:WP Super Cache | WordPress大學 (wpdaxue.com)](https://www.wpdaxue.com/wp-super-cache.html)
WP Super Cache 插件的知名度和使用度非常的高,其主要解決的問題就是 WordPress 本身沒有像傳統 CMS 程序一樣直接生成靜態文件的功能
靜態緩存效果:

### 頁面靜態緩存沒效果?

請檢查super cache 配置。
### 有沒有其他方案?
Cloudflare APO,[How to Set up Cloudflare APO for WordPress (kinsta.com)](https://kinsta.com/blog/cloudflare-apo-wordpress/)
*****
*****
## 其他的性能檢查和調優:
**1,設置 redis session**
**2,開通 Zend OPcache**

**3,PHP性能調整:**
寶塔面板——軟件管理——PHP管理——性能調整,根據服務器內存數量和自己建站的數量進行并發數量設置。
**4,升級PHP**
php8 :

[The Definitive PHP 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, and 8.0 Benchmarks (2021) (kinsta.com)](https://kinsta.com/blog/php-benchmarks/)
**5,Mysql 修改為 mysql8 (選)**
**6,檢查插件,經常是它造成問題**
選擇更好的插件
https://kinsta.com/best-wordpress-plugins/#lms
https://wordpress.org/plugins/disable-wordpress-updates/
**最后,看看優化結果:**

沒有問題了,頁面性能問題,已經解決。
*****
*****