背景 建立了一个博客,发表了3。8万篇文章。 随着数据条数的增多,尤其是搜索的时候,发现搜索时灵时不灵,很久都没有反应。 后面在wordpress中footer。php页面下加入这一句,可以显示mysql加载的速度和耗时。?phpechogetnumqueries();?次加载共计耗时?phptimerstop(1);?秒 搜索关键词之后,发现用时居然快一分钟了,慢成蜗牛了,实在不能忍了。18次加载共计耗时52。783秒 通过下面的方法,让网站变成兔子一样迅速。 架设个人博客网站、企业门户都可以使用ECS。如果其网站如个人博客主要面向国内用户访问,为加快速度还是建议选用国内的服务器商。 〔阿里云域名〕(https:wanwang。aliyun。comdomaincom?userCodeyos4xyvp)连接, 〔阿里云服务器ECS〕(https:www。aliyun。comminisitegoods?userCodeyos4xyvp)链接为什么选择阿里云以前域名注册一般选老牌域名服务商,其中万网已经被阿里收购到旗下了。提供域名备案服务。备案业务还是很贴心的。提交完备案信息之后,第二天阿里云小姐姐会帮你免费形式审查一下,还会主动打电话过来帮助校正。如果是自己动手提交备案信息给ICP备案机构,万一因为低级错误被驳回就浪费了十天左右时间。域名ICP备案需要服务器,阿里云也提供服务器购买,一条龙服务嘛。服务器在阿里云毕竟服务器才是支出大头,域名什么的都是小意思了。而且购买完服务器之后,还会有客服主动打电话过来询问使用情况,需不需要技术支持,还是挺不错的。阿里云服务器购买新用户有优惠,最基础的话一年下来不超过100元。如果是本科生的话免费使用的。备案完成之前,服务器不算租赁时间。比如说3月1日我购买了一年的服务器,域名提交备案。18日域名备案审核通过。服务器租赁时间重新按18日算起,即可以用到第二年3月18日。相当于免费多用几天。占了一点小便宜。限定搜索标题 搜索发现关键词发现返回一两万条结果。 才了解到搜索不仅仅是搜索标题,还包括正文内容。 其实我在这里并不需要搜索正文内容,修改PHP代码,限定只搜索标题,将下面的代码添加到主题的functions。php文件即可让WordPress只搜索文章的标题https:www。wpdaxue。comsearchbytitleonly。htmlfunctionsearchbytitleonly(search,wpquery){if(empty(search))n!empty(q〔exact〕)?:;foreach((array)q〔searchterms〕asterm){termescsql(likeescape(term));search。{searchand}(wpdbposts。posttitleLIKE{n}{term}{n});searchandAND;}if(!empty(search)){searchAND({search});if(!isuserloggedin())search。AND(wpdbposts。postpassword);}}addfilter(postssearch,searchbytitleonly,500,2);对MySQL的wpposts表中posttitle增加索引 这样加快对标题搜索。安装Memcached插件 在bt面板里勾选这个插件,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。清理WordPress中MySQL数据库垃圾数据 数据库的垃圾数据主要存在wpposts、wppostmeta、wpcommetns、wpcommentmeta和wpoptions 具体可以搜索介绍使用WordPress时10个常用的MySQL查询等内容。 关于Wordpress中数据表关系如下 数据表 存储的数据 关联到 wpposts 文章、页面、附件、版本、导航菜单项目 wppostmeta(通过postid关联) wppostmeta 每个文章的元数据 wpposts(通过postid关联) wptermrelationships 文章和自定义分类法之间的关系 wpposts(通过postid关联)wptermtaxonomy(通过termtaxonomyid关联) wptermtaxonomy 自定义分类法(包括默认的分类目录和标签) wptermrelationships(通过termtaxonomyid关联) wpterms 关联到分类法中的分类目录,标签和自定义分类项目 wptermtaxonomy(通过termid关联)wpposts 因为wpposts会保留文章修订版本,即发布一篇文章,在数据库里是有两条的数据的。 删除文章修订版本DELETEFROMwppostsWHERE wp媒体管理器上传图片的时候同时会生成attachment文章格式,如果你不需要根据这个检索图片的话也可以删掉。DELETEFROMwppostsWHEREwppostmeta 这里是重灾区,可以执行以下命令DELETEFROMwppostmetaWHEREDELETEFROMwppostmetaWHEREDELETEFROMwppostmetaWHEREDELETEFROMwppostmetaWHEREpostidNOTIN(SELECTpostidFROMwpposts);DELETEFROMwppostmetaWHEREDELETEFROMwppostmetaWHEREDELETEFROMwppostmetaWHEREmetavalue{{unknown}}; 如果你不需要管理你的多媒体文件可以使用下面这两句DELETEFROMwppostmetaWHEREDELETEFROMwppostmetaWHERE 综合到一起可直接执行下面两句DELETEFROMwppostmetaWHEREmetakeyin(editlock,editlast,wpoldslug,revisioncontrol,{{unknown}},wpattachedfile,wpattachmentmetadata);DELETEFROMwppostmetaWHEREpostidNOTIN(SELECTidFROMwpposts);wpcomments 删除所有垃圾评论DELETEFROMwpcommentsWHERE 删除所有待审评论DELETEFROMwpcommentsWHEREcommentapproved0;wpcommentmeta 一般来说直接删掉这个表就可以了,如果你使用了commentmeta存储信息请谨慎执行此句TRUNCATETABLEwpoptions 尤其是使用网易云音乐,都会在wpoptions表中产生大量垃圾数据。DELETEFROMwpoptionsWHEREoptionnameLIKEDELETEFROMwpoptionsWHEREoptionnameLIKE 这样会删除所有临时数据,包括未过期的,谨慎使用。 通过以上设置,现在几万条的搜索,不到1秒的响应,效率极大的提高。