時間: 2024-11-14 03:14:07 人氣: -
WordPress網(wǎng)站訪問慢,一般是數(shù)據(jù)庫查詢語句執(zhí)行慢導致的。
例如:查詢語句如下
/* 受影響記錄行數(shù): 0 已找到記錄行: 5 警告: 0 持續(xù)時間 1 查詢: 15.016 秒. */
上面一條語句執(zhí)行要15秒,這未免太慢了。
通過改WordPress代碼中的查詢語句,肯定可以解決這些問題,但問題是,如果要改sql語句,勢必要改很多代碼,這個方法我不推薦。
有的人可能說加索引,但加上索引后,發(fā)現(xiàn)執(zhí)行還是很慢。原因是,有的查詢語句未必會用到索引,所以,這個方法我也不推薦。
其實WordPress慢的原因,很大一部分跟wp_posts表查詢有關,仔細觀察這個表,你會發(fā)現(xiàn)這個表引擎是InnoDB,MySQL有個非常適合查詢的表引擎是MyISAM,如果把這個表引擎改為MyISAM是否會更快了?
改變表引擎:
改完后,再次執(zhí)行查詢語句
/* 受影響記錄行數(shù): 0 已找到記錄行: 5 警告: 0 持續(xù)時間 1 查詢: 0.750 秒. */
速度提升了,由15.016秒變?yōu)榱?.750秒,這速度已經(jīng)很快了。
為了測試,那我就將整個數(shù)據(jù)庫中的所有表引擎都改為MyISAM試試。
改完之后,WordPress后臺文章列表頁面基本上可以4秒左右打開。
后臺標簽頁面由于排序?qū)е马撁婕虞d慢,可以通過代碼修改排序規(guī)則。
/* 受影響記錄行數(shù): 0 已找到記錄行: 20 警告: 0 持續(xù)時間 1 查詢: 18.485 秒. */
這個只能改查詢語句了。
add_filter('get_terms_args',function ($args, $taxonomies ){
$args['orderby'] = 'term_id';
return $args;
},10,2);
強制將排序改為按照term_id排序,現(xiàn)在,查詢肯定很快。
上面那條語句放棄優(yōu)化,2秒可以接受。
基本上網(wǎng)站后臺頁面沒有之前那么卡了,至于前臺頁面的優(yōu)化,需要根據(jù)主題代碼來優(yōu)化,這邊推薦安裝緩存加速類的插件解決前臺訪問慢的問題。