WordPress 文章超过10万就会负载很高,是不是不适合做大网站?

WordPress 文章超过10万就会负载很高,是不是不适合做大网站?

这个问题是所有使用 WordPress 建站到一定规模之后都会碰到的问题,一般人的对此问题也都是泛泛而谈,都是那些常见的处理方式,没有具体怎么去定位 WordPress 慢这个问题的方法,定位之后怎么解决也没有。

我也接过很多 WordPress 优化的单子,所以我结合自己经验决定讲讲自己是怎么处理的。

基础优化

首先提供三点简单的优化建议:

将 WordPress 更新到 6.1,因为 WordPress 6.1 无需插件即可实现站点 0 SQL,这个操作是最直接最有效的。WordPress 性能优化的基础是一款速度够快的主题,很多 WordPress 站点速度很慢,绝大部分原因就是主题。对 WordPress 进行基本的优化,WordPress 性能优化:为什么我的博客比你的快,我这篇文章已经做了非常详细的介绍,主要是两点:使用 CDN 对动静态资源进行分离和使用 Memcached 来缓存 WordPress 数据。可能的原因

做了上面三点简单的基础优化的操作之后,速度还是很慢,那应该怎么办?根据我的经验,WordPress 速度太慢,一般来说可能是下面这些原因:

页面的 SQL 请求太多了,把数据库的请求池耗尽了。HTTP 请求太多,并且都没有做缓存,占用了太多的服务器资源。主题或者插件的 PHP 程序代码没写好,甚至有死循环,直接卡死。Log 程序

怎么定位这些问题呢?工欲善其事,必先利其器,所以我写了一个 WordPress 各种 Log 记录的插件,专门来定位这些问题:

如上图所示,首先这个插件会每天孜孜不倦记录程序的错误或者警告,这样我就可以根据这个错误来优化和健壮程序,很多时候,用户是无法清洗反馈清楚自己的错误的,只是说程序有问题,通过 Log 反而容易定位代码的,比如上面的 PHP log :

我截取其中一段,就可以记录一个 PHP Warning 信息,PHP 数组 Undefined index 的问题,具体发生在哪个文件哪一行,具体的回调过程,请求的时间,地址,来源,Post 提交的数据都记录一下,对解决问题是帮助非常大。

上图中还有 weapp 和 weixin 相关的 log,是我为了区分方便处理,把微信公众号和微信小程序插件相关的错误拆分到不同的文件,然后每个文件都加上日期,这样每天的 log 都会被记录下来。

定位问题

你肯定会问,这个 log 记录系统和 WordPress 慢有什么关系?

其实大有关系了,通过 Log 是定位问题最好的方法,为了解决程序慢的问题,我还专门对超过5秒才能打开页面的做了详细的记录。

我会记录这个页面,调用的时间,地址,传递的 POST 数据(如有),来源和具体耗时多少秒:

这个慢查询 Log 会记录这个页面的所有 SQL 请求,共有多少条 SQL 请求,每条 SQL 具体是什么,耗时以及调用栈:

如果有 HTTP 请求,慢查询 Log 也会记录所有的 HTTP 请求,每条 HTTP 请求的链接,参数,耗时和调用栈:

解决问题

定位了问题之后,解决起来就非常方便了。

如果是 SQL 请求太多,是不是在 for 循环里面做了 SQL 请求?如果是,就应该在 for 循环之前,就应该通过所有 id 一次获取数据,这样就不会一次耗尽数据库线程。

如果是 HTTP 请求太慢,是不是可以把请求的结果缓存到 Memcached 中,这样下次就无需远程的 HTTP 请求,直接从内存中获取即可。

举个具体的例子,一般来说相关文章是通过文章的标签的相关来生成的,这样就需要使用到文章和标签的关联表(wp_term_relationships)和文章表(wp_posts)进行连表查询,根据文章相关度进行排序,我见过一些文章数和标签数多的站点,这样的一条 SQL 查询经常会 5-10 秒,这样的慢查询经常把站点搞挂。

我是怎么优化的呢?放弃连表的,首先获取当前文章的标签,然后从文章和标签的关联表(wp_term_relationships)根据这些标签获取最相关的文章 ID,并且多获取一些,比如要获取5篇,我就至少获取10篇,然后把获取的文章 ID,从文章表(wp_posts)中获取具体的数据,舍弃到那些不符合文章类型和状态的,剩下的就符合要求了,剩下的不够,就继续上述的方法在找一些直至数量够了。这样通过 PHP 脚本进行优化,相关文章造成的性能问题就能得到完美的解决。

「网站没排名」WordPress做外贸网站必须要慎重的4个因素

刚用WordPress给自己的公司做了一个网站,但是在百度和谷歌上好久都没排名,是什么原因的?照理说WordPress的SEO应该做的很好才对,为何WordPress外贸网站迟迟没有排名?很可能你踩了以下4个坑!

WordPress程序代码不够规范

工欲善其事必先利其器,很多企业主因为不懂WordPress程序技术,自己倒腾或者找一个业余的程序员随便搞搞网站,就草草上线了,导致网站的程序有各种问题。

基于我们团队研究WordPress主题质量对谷歌搜索引擎上排名的研究,我们发现,最损害外贸企业主的WordPress网站的原因,居然就是国人自己开发的主题!!就是那些市面上399一个599一个的模板主题!

为什么是这样呢?是我们非要鄙视国内的WordPress开发者吗?

我们稍微用脑子想一下:国人自己开发的主题,往往都是一个半吊子的程序员自己在家靠一人之力,闲暇时光自己下班闷在家里开发的,一个人的实力非常有限,而且这些人往往看不懂英文的文档,导致WordPress开发的主题各种缺陷;

反之,国外那些知名的WordPress主题Avada或者The 7之类的而国外的WordPress主题,都是一整个公司一群人设计开发的,而且在正版的themeforest上有几十万的销量,经历了成千上万世界的用户的使用和检验,有任何bug或者问题,都有几万双眼睛看着,主题的买家会到themeforest平台上求助或者投诉,然后主题作者有责任立刻改善主题并且发布新版本。

所以聪明的外贸企业老板,您每年有几百万的销售额,您是会花费500元买一个国内人开发的半吊子主题,还是花费59美金买一个成熟专业的外国公司开发的主题呢?

您敢把自己的企业未来几年的命运交付在一个从未谋面的WordPress业余程序员手上吗?

服务器在国内或者没有CDN

好了,假设您很明智,没有踩第一个坑,购买了一个正版的优质主题,然后第二个坑又来了:服务器。

很多人也不懂服务器的价格,看到那种每年几十元或者几百元的什么VPS虚拟主机,就直接买来用,后来发现,服务器非常不稳定,网站总是打不开!

要知道,谷歌对于那些经常打不开的网站,会有严重的惩罚的!

什么叫CDN?举个例子吧,如果您购置的服务器,地理位置在新加坡,那么新加坡的访客访问您的网站就会非常快;但是在美国的用户访问您的网站的时候,就很慢了,为何?因为美国离新加坡很远嘛!

什么?你问我在美国也买一台服务器不就好了吗?可以啊,除非你是土豪,全世界每个重点城市都购置服务器,一台服务器一年几万元,成本太高了。

所以就采用的CDN内容分发技术,让您的网站在世界上有多个快速访问的节点,不用额外购置服务器了~

可能这些有点太专业没听懂,总之就这样理解:有了CDN之后,全世界的用户就会更快地访问您的网站了,方便您拓展全球业务。

这里最后吐槽一下bluehost,听说是世界上最好用服务器之一,但是使用下来感觉非常一般,最烦恼的地方就是,国内打开他们的cpanel非常慢,客服的livechat也是经常掉线,更加不用输什么网站备份,然后下载文件这些事情了,用FTP下载bluehost的文件基本是不可能成功。。。

网站内容不充分

好啦,现在你的WordPress模板也是正版的了,服务器也是阿里云的了,那么你的WordPress外贸网站就可以高枕无忧了吗?还差得远呢!

你才刚完成了两个必要条件而已,还没涉及到任何SEO优化操作呢!

外贸网站,不仅仅是上传产品图片而已,而是要精挑细选,打磨好每一个页面,并且写很多产品相关的文案,向客户体现出您公司的专业度。

这时候,您觉得,一个只500元卖WordPress模板的人,会有心思了解您企业的产品吗?会懂得帮你们做英文的文案营销吗?

痴人说梦,那些业余的人只懂得给你卖低质量的WordPress模板,打一炮就走,拒不退款。小心不要被坑了。

所以,要好好做内容啊!留言告诉我,你们网站的内容都是谁帮你写的呀?

缺乏专人管理WordPress网站

这一个啊,就是意识形态的问题,或者说是企业主老板认识与格局的问题,也非常需要重视。

我们通过前3步的努力:有了一个正版的WordPress主题+阿里云ECS和一大堆优质的文案,这些操作多半都不是老板自己亲自操作的,而是让手下员工去处理的。

但是,万一这个员工离职了呢?

难道这一切,又要重新开始?

或者,万一你们的域名到期,没有及时续费呢?

服务器到期也没人提醒呢?

我们WP花园接触过的外贸企业,一般分为两种:1.规模5人以下的小公司,大家都是身兼数职,根本没法沉下心来好好做网站的SEO优化;2.几十人的规模大一点的公司,这样的公司往往又管理混乱,要层层向上汇报,相互推卸责任,导致一个简单的问题迟迟没法解决。