建立了一個博客,發表了3.8萬篇文章。

隨著數據條數的增多,尤其是搜索的時候,發現搜索時靈時不靈,很久都沒有反應。

后面在wordpress中footer.php頁面下加入這一句,可以顯示mysql加載的速度和耗時。

 echo get_num_queries();?>次加載共計耗時 timer_stop(1);?>

搜索關鍵詞之后,發現用時居然快一分鐘了,慢成蝸牛了,實在不能忍了。

18次加載共計耗時52.783

通過下面的方法,讓網站變成兔子一樣迅速。


架設個人博客網站、企業門戶都可以使用ECS。如果其網站如個人博客主要面向國內用戶訪問,為加快速度還是建議選用國內的服務器商。

[阿里云域名] ( https://wanwang.aliyun.com/domain/com/?userCode=yos4xyvp)連接,

[阿里云服務器ECS] ( https://www.aliyun.com/minisite/goods?userCode=yos4xyvp) 鏈接

為什么選擇阿里云

  1. 以前域名注冊一般選老牌域名服務商,其中萬網已經被阿里收購到旗下了。
  2. 提供域名備案服務。備案業務還是很貼心的。提交完備案信息之后,第二天阿里云小姐姐會幫你免費形式審查一下,還會主動打電話過來幫助校正。如果是自己動手提交備案信息給ICP備案機構,萬一因為低級錯誤被駁回就浪費了十天左右時間。
  3. 域名ICP備案需要服務器,阿里云也提供服務器購買,一條龍服務嘛。服務器在阿里云畢竟服務器才是支出大頭,域名什么的都是小意思了。而且購買完服務器之后,還會有客服主動打電話過來詢問使用情況,需不需要技術支持,還是挺不錯的。
  4. 阿里云服務器購買新用戶有優惠,最基礎的話一年下來不超過100元。如果是本科生的話免費使用的。
  5. 備案完成之前,服務器不算租賃時間。比如說3月1日我購買了一年的服務器,域名提交備案。18日域名備案審核通過。服務器租賃時間重新按18日算起,即可以用到第二年3月18日。相當于免費多用幾天。占了一點小便宜。

限定搜索標題

搜索發現關鍵詞發現返回一兩萬條結果。

才了解到搜索不僅僅是搜索標題,還包括正文內容。

其實我在這里并不需要搜索正文內容,修改PHP代碼,限定只搜索標題,將下面的代碼添加到主題的?functions.php?文件即可

/**
 * 讓 WordPress 只搜索文章的標題
 * https://www.wpdaxue.com/search-by-title-only.html
 */
function __search_by_title_only( $search, &$wp_query )
{
    global $wpdb;
 
    if ( empty( $search ) )
        return $search; // skip processing - no search term in query
 
    $q = $wp_query->query_vars;    
    $n = ! empty( $q['exact'] ) ? '' : '%';
 
    $search =
    $searchand = '';
 
    foreach ( (array) $q['search_terms'] as $term ) {
        $term = esc_sql( like_escape( $term ) );
        $search .= "{$searchand}($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')";
        $searchand = ' AND ';
    }
 
    if ( ! empty( $search ) ) {
        $search = " AND ({$search}) ";
        if ( ! is_user_logged_in() )
            $search .= " AND ($wpdb->posts.post_password = '') ";
    }
 
    return $search;
}
add_filter( 'posts_search', '__search_by_title_only', 500, 2 );

對MySQL的wp_posts表中post_title增加索引

這樣加快對標題搜索。

安裝Memcached插件

在bt面板里勾選這個插件,通過緩存數據庫查詢結果,減少數據庫訪問次數,以提高動態Web應用的速度、提高可擴展性。

清理WordPress中MySQL數據庫垃圾數據

數據庫的垃圾數據主要存在wp_posts、?wp_postmeta、?wp_commetns、?wp_commentmeta?和?wp_options

具體可以搜索”介紹使用WordPress時10個常用的MySQL查詢“等內容。

關于Wordpress中數據表關系如下

數據表

存儲的數據

關聯到

wp_posts

文章、頁面、附件、版本、導航菜單項目

wp_postmeta (通過post_id關聯)

wp_postmeta

每個文章的元數據

wp_posts (通過 post_id關聯)

wp_term_relationships

文章和自定義分類法之間的關系

wp_posts (通過 post_id 關聯) wp_term_taxonomy (通過term_taxonomy_id 關聯)

wp_term_taxonomy

自定義分類法(包括默認的分類目錄和標簽)

wp_term_relationships(通過 term_taxonomy_id關聯)

wp_terms

關聯到分類法中的分類目錄,標簽和自定義分類項目

wp_term_taxonomy (通過term_id 關聯)

wp_posts

因為wp_posts會保留文章修訂版本,即發布一篇文章,在數據庫里是有兩條的數據的。

刪除文章修訂版本

DELETE FROM wp_posts  WHERE post_type = 'revision';

wp 媒體管理器上傳圖片的時候同時會生成attachment?文章格式,如果你不需要根據這個檢索圖片的話也可以刪掉。

DELETE FROM wp_posts  WHERE post_type = 'attachment';

wp_postmeta

這里是重災區,可以執行以下命令

DELETE FROM wp_postmeta WHERE meta_key = '_edit_lock';
DELETE FROM wp_postmeta WHERE meta_key = '_edit_last';
DELETE FROM wp_postmeta WHERE meta_key = '_revision-control';
DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT post_id FROM wp_posts);
DELETE FROM wp_postmeta WHERE meta_key = '_wp_old_slug';
DELETE FROM wp_postmeta WHERE meta_key = '_revision-control';
DELETE FROM wp_postmeta WHERE meta_value = '{{unknown}}';

如果你不需要管理你的多媒體文件可以使用下面這兩句

DELETE FROM wp_postmeta WHERE meta_key = '_wp_attached_file';
DELETE FROM wp_postmeta WHERE meta_key = '_wp_attachment_metadata';

綜合到一起可直接執行下面兩句

DELETE FROM wp_postmeta WHERE meta_key in ('_edit_lock', '_edit_last', '_wp_old_slug', '_revision-control', '{{unknown}}', '_wp_attached_file', '_wp_attachment_metadata');
DELETE FROM wp_postmeta WHERE post_id NOT IN (SELECT id FROM wp_posts);

wp_comments

刪除所有垃圾評論

DELETE FROM wp_comments  WHERE comment_type = 'trash';

刪除所有待審評論

DELETE FROM wp_comments  WHERE comment_approved = '0';

wp_commentmeta

一般來說直接刪掉這個表就可以了,如果你使用了commentmeta存儲信息請謹慎執行此句

 TRUNCATE TABLE `wp_commentmeta`;

wp_options

尤其是使用網易云音樂,都會在wp_options表中產生大量垃圾數據。

DELETE FROM wp_options WHERE option_name LIKE '_transient_%';
DELETE FROM wp_options WHERE option_name LIKE '_transient_timeout_%';

這樣會刪除所有臨時數據,包括未過期的,謹慎使用。

通過以上設置,現在幾萬條的搜索,不到1秒的響應,效率極大的提高。

聲明:本站所有文章資源內容,如無特殊說明或標注,均為采集網絡資源。如若本站內容侵犯了原著者的合法權益,可聯系本站刪除。

上一篇 WordPress 批量轉移文章分類插件推薦
下一篇 百度文庫如何引流推廣和賺錢?