2013年,WordPress引入了Heartbeat API——一种允许您的浏览器自动与服务器通信的功能。但是,此功能有几个缺点。
如果您使用共享主机计划,则需要仔细查看服务器的CPU使用率。那是因为当您超出限制时,一些托管公司可能会暂停您的帐户。
在这里,我们将讨论为什么WordPress Heartbeat API是导致问题的常见嫌疑人,及如何禁用和修改Heartbeat API频率。
什么是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使用率最终会导致帐户暂停。
因此,如果您遇到的问题会导致POST-admin-ajax.php出现峰值,这里有一个教程可以帮助您解决这个问题。
停止Heartbeat API之前需要考虑的事项
如果您打算完全停止Heartbeat API,则需要三思而后行。不是因为你做不到,而是不实用。
如果没有WordPress Heartbeat API,如果您忘记单击“保存草稿”按钮,您在文章中所做的所有更改都将丢失。您将无法再访问WordPress中的修订功能。
如果您安装使用Heartbeat API的WordPress插件,您也无法在您的站点上显示实时通知和信息功能。
但是,如果您是一个人工作,并且所有这些功能对您来说并不重要,那么您可以继续停止WordPress Heartbeat API。
否则,您可能会考虑改为控制API。
如何使用插件限制WordPress Heartbeat API?
您可以使用Heartbeat Control插件控制Heartbeat API向您的服务器发送回调的频率。
安装并激活插件后,转到Settings -> Heartbeat Control Settings。在这里,您可以为API设置一定的规则。
- Heartbeat Behavior– 允许您启用心跳、禁用心跳或修改心跳
- Location– 确定您要控制API的区域,它为您提供三个选项:WordPress仪表盘、前端和文章编辑器
- Frequency– 您允许每个确定位置的回调次数。取值范围为15到300秒
在示例中,我们将Post Editor中Heartbeat API函数的频率限制为200秒。如果您有多个作者在同一个WordPress网站上工作,这是一种更实用的方法。
您还可以在您希望控制的每个位置设置不同的值。只需单击添加另一个值按钮,并相应地进行调整。
该插件还允许您完全禁用WordPress Heartbeat API。您可以通过为Heartbeat Behavior选择Disable Heartbeat来做到这一点。
如何在没有插件的情况下完全停止Heartbeat API?
您也可以在没有插件的情况下停止Heartbeat API,方法是将此代码段添加到您的活动主题functions.php文件中。
add_action( 'init', 'stop_heartbeat', 1 ); function stop_heartbeat() { wp_deregister_script('heartbeat'); }
请记住,如果您是网站的唯一工作人员并且您不需要安装使用此API的其他插件,则应该这样做。
从您的WordPress仪表板,转到Appearance -> Theme Editor。确保您正在编辑网站的活动主题。从右侧导航菜单中单击主题函数 (functions.php) 。将上面的代码片段粘贴在<?php 标记之后,然后单击Update。
就是这样,现在您已经成功地在您的站点上禁用了WordPress Heartbeat API。
小结
您已经了解了WordPress Heartbeat API及其为您的站点提供的功能。尽管这无疑是有益的,但在共享托管环境中,如果您处理不当,它可能会导致相当大的问题。
要减少服务器上的CPU使用率,您可以控制API或完全禁用它。此外,您可以使用插件或手动将代码添加到functions.php文件中。