WordPress在2013年推出了Heartbeat API(国内可能也叫做 心跳 API),该功能可让您的浏览器自动与服务器通信。但是,此功能有两个缺点。
如果使用共享主机计划,则需要仔细查看服务器的CPU使用率。这是因为某些托管公司可能会在您超出限额时暂停您的帐户。
在这里,我们将讨论为什么WordPress Heartbeat API是引起CPU占用过高的主要原因所在。
什么是WordPress Heartbeat API?
WordPress Heartbeat API使用浏览器和服务器之间的AJAX调用提供通信协议。
顾名思义,API将在接收到数据后发送连续脉冲并触发事件(或回调)。此功能可帮助您在服务器和WordPress仪表盘之间同步所有数据。
Heartbeat API 的作用值我们关注。例如,当您从编辑器创建/编辑文章时,它提供了定期自动保存文章的功能。
在协作式WordPress网站中,它具有文章锁定功能,以防止您编辑其他用户正在处理的文章。如果您使用商城插件,此API也有助于显示您网站上发生的销售额。
为什么要限制WordPress Heartbeat API?
虽然具有自动保存功能和实时数据通知功能是有益的,但在特定情况下可能是有害的。
Heartbeat API使用/wp-admin/admin-ajax.php文件发送AJAX请求(POST请求)。每个执行PHP文件的请求都会占用服务器上的CPU时间。这可能会导致将大量请求发送到托管服务器,从而导致较高的CPU使用率。
如前所述,对于拥有共享托管计划的网站管理员来说,这可能是个问题。当您达到配额限制时,高CPU使用率最终会导致帐户被暂停。
停用 Heartbeat API 之前应考虑的事项
如果您想完全停止Heartbeat API,则需要三思而后行。这不是因为您不能做到这一点,而是不切实际。
没有WordPress Heartbeat API,如果您忘记单击“保存草稿”按钮,则您在文章中所做的所有更改都将丢失,并且您将不能再使用WordPress中的修订功能。
如果安装了需要使用Heartbeat API的插件,那些插件也将无法在您的站点上显示实时通知和信息功能。
但是,如果您一个人工作,而所有这些功能对您来说都没什么大不了,那么您可以继续停用WordPress Heartbeat API。否则,您可以考虑控制API的执行频率。
如何通过插件限制WordPress Heartbeat API?
您可以使用Heartbeat Control插件来控制 Heartbeat API多久发送一次回调到服务器。
安装并激活插件后,转到设置->心跳控制设置。在这里,您可以为API设置特定规则。
- 心跳行为 –允许您启用心跳,禁用心跳或修改心跳
- 位置 –确定要从哪个区域控制API,它为您提供三个选项:WordPress仪表板,Frontend和Post Editor
- 频率 -您为每个确定的位置允许的回调次数。取值范围是15到300秒
在示例中,我们将Post Editor中Heartbeat API函数的频率限制为178秒。如果您有多个作者在同一WordPress网站上工作,这是一种更实用的方法。
此插件还允许您完全完全禁用WordPress Heartbeat API。您可以通过为“ 心跳行为”选择“禁用心跳”来实现。
如何在没有插件的情况下完全停止Heartbeat API?
您还可以通过将此代码段添加到当前主题的functions.php文件中来停用Heartbeat API 。
add_action( 'init', 'stop_heartbeat', 1 );
function stop_heartbeat() {
wp_deregister_script('heartbeat');
}
请记住,如果您是唯一使用该网站的人,并且不需要安装使用此API的其他插件,就可以这样做,否则,请不要停用。
从WordPress控制台中,转到外观->主题编辑器。确保您正在编辑网站的的激活主题。从右侧导航菜单中单击主题功能(functions.php)。在打开<?php标记之后的右上方粘贴代码段,然后点击更新。
就是这样,现在您已经成功禁用了站点上的WordPress Heartbeat API。
总结
您已经了解了WordPress Heartbeat API及其为您的网站提供的功能。尽管这是有好处的,但在共享主机环境中,如果您处理不当,可能会引起CPU占用过高的问题。为了减少服务器上的CPU使用率,您可以使用插件或将代码手动添加到functions.php文件中来控制API或完全禁用它。
来源:
https://www.wpdaxue.com/what-is-the-wordpress-heartbeat-api-and-how-to-manage-it.html