共计 2084 个字符,预计需要花费 6 分钟才能阅读完成。
终于是时候对 Wordpress 说一声再见了,从 2013 年注册 ijiandao.com 域名,搭建爱尖刀网站,到现在已有接近七年时间,以前都是时而兴起就弄弄这个网站,直到去年夏天离职后,开始无聊的时候给爱尖刀搞起 SEO。
毕竟是 04 年老站长出身,从折腾搭网站到今天也算熬过了 16 个年头,从之前搞站群到后面搭建各种识别蜘蛛的 SEO 引擎,在这个基础上造了新的逻辑算法引擎,原本就不是特别适合做媒体的 WordPress,在大量数据增长以及流量、各搜索引擎爬虫增加的过程中终于无法承受压力,终于崩了。
粗略的整理一下爱尖刀当时的情况,文章 15 万 +、标签 8 万 +、Alexa 排名 2200+、百度收录 20 万 +、日访问 IP5 万 +、日各搜索引擎爬虫爬取 150 万余次。
其实早就该放弃 WordPress 了。
WordPress 优化
之前发朋友圈吐槽爱尖刀因 WordPress 卡成狗,出现了几个杠精给我聊各种 Wp Supper Cache、去除谷歌字体、以及各种优化问题。
其实是不想吐槽的,缓存肯定早就做了、模板自己写的、不但这样我们还上了 CDN、连上传一个图片被分拆成小中大三个图片占资源的问题我们都考虑了,甚至还有定期干掉除了 publish 状态外,删了 auto-draft 及 inherit 给数据瘦身,但这只是基础优化。
基础优化解决不了我们遇到的核心问题,数据量太大了,数据库结构设计不合理导致查询也跟着蝴蝶效应造成持续慢查询啊。
WordPress 慢查询
我一定要给各位朋友一个严重声明,使用 WordPress 之前一定要搞清楚,它是一个博客系统,不是一个大 CMS 框架,如果你的数据量未来会达到万级亦或者十万级,从开始就建议你放弃这个念头,thinkPHP 原生开发亦或者看看 discuz!当然这里我说的是 PHP,你如果有动手能力也可以看看其他语言的框架。
为什么这样讲呢?我给大家随便贴个数据库的表结构图:
一表多用问题
guid 是动态的,post_type 属性不同,guid 的用途不一样,我这里只是随手给个截图,其实整个数据库的风格和结构都差不多是这样,一表多用对数据少的博客没问题,但是对我们这种数据十万级以上的就要吃很多苦头了。
数据表结构问题
有人会提出优化数据表结构来解决这些,比如 wp_postmeta 这张表它存储的每篇文章 / 页面的元数据信息,文章的阅读量、封面、以及自定义的内容都在这里。
正常情况是一篇 wp_posts 对应一行 wp_postmeta,他们之间用 post_id 来关联,但是 wp_postmeta 是一张纵表,明明查一次就可以搞定的事儿,可能就要变成查 3 - 4 次才能搞的定,可是这不是唯一的问题!
数据拉取问题
WordPress 拉取数据也是存在问题的,比如在 post 列表的时候,会把文章数量一起拉出来。
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID FROM wp_posts WHERE 1=1 AND wp_posts.post_type = post AND (wp_posts.post_status = publish) ORDER BY wp_posts.post_date DESC LIMIT 0, 20
SELECT FOUND_ROWS()
正常情况下我让你列一下首页最新 10 篇文章出来给我看,你倒序最新十篇就行了,但是 WordPress 不这样干,它非常任性的在全库里 查询一次告诉我,咱们家一共有 15 万篇文章,最新的十篇文章都是 XXXX。
但凡是首页、文章列表、标签、以及搜索都要触发 SQL_CALC_FOUND_ROWS,都要用这个神操作。
忍痛重构!
考虑了各种问题,最终还是对爱尖刀下了狠手整体重构,更换了开发语言从 PHP 换到了 Golang、重新做了数据库老数据一条条的导出、里面的坑真的能弄死个人,真的实在不想再弄第二次了,如果可以我觉得围绕爱尖刀这次重构经验,我完全可以写个付费阅读篇《WordPress重构深坑指南》。
目前爱尖刀已经顺利完成重构,因为实在不想折腾了,老的用户量也没多少人,除了密码数据真的不想再折腾简单粗暴的集体给大家随机重置匹配了一个(其实可以掉原来的登陆接口再强制更改密码,只是觉得没必要)、头像数据因为年前服务器到期搬家的时候忽略了中文问题导致导出失败,图片封面内容因为数据太大还在慢慢导出基本也算完成了。
今天开始我们迎接个新开始吧,给大家个建议如果数据量很大、且流量也认为未来会很多,千万不要用 WordPress!本身就已经不止于一个博客过度臃肿了,我真的怕你吃不消。
新版爱尖刀改版后流量基本没有减少,SEO 方面反而比之前还要友好 一些,之前有爱尖刀平台的用户可以直接以注册邮箱发邮件至 miao@1aq.com 找回密码,企业会员直接 WX 联系阿喵。
新爱尖刀定位
定位服务企业级服务市场的科技媒体,服务于企业品牌营销及内容推广,爱尖刀 V8.0 版本正式启用,给大家秀一波我们的 SEO 收录量吧。
当前 Alexa 排名 2236,人均停留时长 1:36 秒,如不出意外我们将在 4 月份进入 2000 内。
我们将复用这个新框架到知娱旗下的所有媒体平台,今年知娱围绕文娱方面会做一系列的内容站,欢迎撩。