亲测解决WordPress网站提交评论延迟高

老白之前发现我的WordPress网站提交评论时,等待的时间很长,但是刷新一下又是成功发布评论的,确实有点影响体验。老白博客网上搜了一堆,教程倒是挺多的,大部分都是垃圾,还什么服务器配置不够,纯扯淡。真正的原因基本上是两种,一种是评论提交触发SMTP冲突,另外一种是插件的缓存清理刷新和预缓存功能冲突。接下来老白说说这两种原因和解决方法。

亲测解决WordPress网站提交评论延迟高

我目前遇到的就是SMTP和缓存清理两种,首先是第一个smtp。

1.评论提交和SMTP发信冲突

1.1 评论提交过程

当访客在 WordPress 网站上提交评论时,如果同时触发通过SMTP发送邮件(例如给站点管理员或评论者的通知邮件),WordPress需要在评论提交的流程中调用SMTP服务器,通过网络请求将邮件信息传递给邮件服务器,并等待邮件服务器的响应。当SMTP服务器的响应速度相对较慢或网络延迟较大时,这整个过程就会让用户在提交评论后感受到一定的等待时间。

简单来说,评论提交的过程为:

  • 步骤①:用户提交评论表单
  • 步骤②:WordPress接收到评论数据并保存至数据库
  • 步骤③:WordPress调用SMTP插件或函数,以邮件通知为例,向管理员/订阅者发送邮件
  • 步骤④:等待SMTP服务器处理请求并返回成功发送的响应
  • 步骤⑤:响应完成后,评论提交流程才会结束,用户才会看到评论提交成功的提示

1.2 提交缓慢原因

如果在上面的步骤③和④花费了较多时间,那么评论提交的整体耗时就会增加,从而给用户造成评论提交变慢的印象。

2.解决SMTP发信冲突

为了解决评论提交和SMTP的问题,可以考虑以下方案:

  • 使用缓存或队列机制,将邮件发送操作放入后台队列中异步发送,而不在用户提交评论时同步执行
  • 减少不必要的邮件通知频率或数量

2.1 减少SMTP邮件通知

在WordPress的设置讨论里面就有两个通知,把它取消勾选就可以降低发信频率。

亲测解决WordPress网站提交评论延迟高

注意
网上大部分都是这个教程,将这两个关闭只能一定程度上解决,但是治标不治本!

2.2 异步邮件通知

插件介绍

插件名SMTP Mailing Queue,功能很多,其中最重要的就是异步发送邮件

插件下载:https://qtrj.lanzoul.com/iPnoR2fjw8re

解释
简而言之就是访客发布了评论后,按照以往是马上就触发邮件发送,但是经过整个插件设置,会在评论过后一段时间,才会触发邮件发送。

插件设置

插件详细设置见:https://wp.bufanz.com/wordpress/smtp-slows-down-comment-posting-speed.html

发信邮箱选择:腾讯云邮件推送配置wordpress网站SMTP发信隐藏源IP

老白这里主要谈谈修改插件自带计划任务,在插件的设置界面有一个:

亲测解决WordPress网站提交评论延迟高

意思就是通过服务器设置一个计划任务,来替代wp自带计划任务,效率更高且不易出错

2.3 smtp计划任务

宝塔面板计划任务添加教程如下:

  • URL:插件给的https://test.xcbtmw.com?smqProcessQueue&key=0i4WTv2r5LMwjcWM&time=1734191942
  • 时间:建议30s或者1分钟

亲测解决WordPress网站提交评论延迟高

关于
宝塔面板计划任务十分方便,可以实现预缓存、服务器环境监测重启等,详见:

宝塔面板shell脚本访问WordPress站点地图实现全站预缓存

宝塔面板PHP-Nginx-Mysql检测并自动重启Shell脚本代码分享

3.缓存机制冲突

一般在设置了WordPress插件SMTP Mailing Queue后,评论提交缓慢的问题基本都能得到解决。

但是老白之前使用powered cache插件时,就发现该插件在评论提交时会触发两个操作:

  • 清理评论相关页面的缓存
  • 预缓存刷新后的页面

二者间隔时间估计比较短,就会导致两个任务同时进行,就会导致冲突从而评论发布时间变长

因此,就需要打开“异步缓存清理”,下面是powered cache插件的开启方法:

亲测解决WordPress网站提交评论延迟高

说明
其他的缓存优化插件一般都有该功能,没有就去给作者提意见;不行就关闭预缓存,用上面老白发的shell脚本来替代

更多有关网站建设以及WordPress使用技巧见文末标签!