Wordpress 效能調教技巧

三月去了 SXSW, 逛攤位的時候逛到 WPEngine 這家公司的攤位, 後來為了懶得管機器, 就把 wordpress 搬到 WPEngine, 也測試一下功能跟穩定度, 因為手上負責公司一堆的 wordpress, 看能不能一起搬過去。

註冊 WPEngine 之後, 都會收到一些信, 像是最近收到一封有關於 WordPress 調教的教學, 名叫 Scaling WordPress For High Traffic 的 PDF, 裡面提到了幾點如何調教的技巧, 稍作紀錄一下。

關於後端

關於後端主要有兩點, 當然都跟資料庫有關,

1. 找出慢的 SQL query

wp-config.php 可以增加一個設定把 query 存下來, 然後印出來查看。

define('SAVEQUERIES', true);  

接著就可以像是在 footer 把 queries 印出來檢查是哪個 query 太慢。

<?php  
if ( current_user_can( 'administrator' ) ) {  
    global $wpdb;
    print_r( $wpdb->queries );
}
?>

或是用 Debug Object 這個外掛也可以處理。 Debug Object 可以讓你在檢視頁面的時候, 在網址後端加上 ?debug 就可以直接在 footer 印出來各種資訊。

2. Options table

原來 Options table 會有自動載入的 query, 所以可以透過下面的 query 來找出來是不是載入太多或是不必要的東西。

SELECT count(*) FROM wp_options WHERE autoload = 'YES'  

還有比較進階的查詢方式

SELECT SUM(LENGTH(option_value)) as autoload_size FROM wp_options  
WHERE autoload=’yes’;  

或是

SELECT option_name, length(option_value) AS option_value_length  
FROM wp_options WHERE autoload=’yes’ ORDER BY option_value_length DESC LIMIT 10;  

3. pre_get_posts

還有提到使用 pre_get_posts 來調整 WordPress 本來就會跑的 query, 避免多跑一次 query 來拿到你要的結果。

關於前端

關於前端, WPEngine 提到有下面幾個方式可以測試前端頁面載入的狀態

再來就是降低 request 數, 使用 CDN, CSS Sprite, GZIP, Image lazy loader 等大家熟知的技巧。 還有主要的就是降低圖片的大小, 因為通常到圖片這塊就已經是編輯在處理的了, 所以這時候需要一些外掛自動處理, 像是有下列這些外掛可以使用。

手上目前有一些 WordPress 網站, 像是 Blow 吹音樂 或是 簡單生活節 等可以測試, 改天等有空再來實驗一下, 但是很明確是沒有空的, 哈哈哈。

tzangms

Read more posts by this author.

Subscribe to Oceanic / 海海人生

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly!