WordPress Heartbeat(心跳) API 已經(jīng)存在了將近十年。它提供了 WordPress 儀表板和主機服務(wù)器之間的無縫實時通信。Heartbeat API 內(nèi)置于 WordPress 核心,提供強大的功能,可以顯著改善網(wǎng)站管理體驗。
然而,這種力量是有代價的。它是保持通信順暢運行所需的服務(wù)器資源數(shù)量。運行資源密集型網(wǎng)站或讓您的托管服務(wù)提供商對內(nèi)存和 CPU 時間施加嚴(yán)格限制可能會導(dǎo)致明顯的性能下降,而 Heartbeat API 可能會發(fā)揮作用。
在本指南中,我們將揭示 WordPress Heartbeat API 的潛力及其在 WordPress 生態(tài)系統(tǒng)中的作用。您將了解 Heartbeat API 的工作原理。您還將了解為什么您可能需要考慮限制其在您的 WordPress 網(wǎng)站上的活動。這將幫助您獲得更好的性能,而無需升級您的托管計劃。
什么是 WordPress Heartbeat API?
WordPress Heartbeat API 是內(nèi)置于 WordPress 核心的接口,可實現(xiàn)服務(wù)器和 WordPress 儀表板之間的實時通信。Heartbeat API 于 2013 年隨 WordPress 3.6 的發(fā)布首次引入。它對內(nèi)容管理和網(wǎng)站管理的其他關(guān)鍵領(lǐng)域進行了重大改進。

為什么 Heartbeat API 如此重要?
WordPress 儀表板主要是一個客戶端應(yīng)用程序。這意味著大部分操作發(fā)生在用戶的瀏覽器中。作為前端應(yīng)用程序,WordPress 管理區(qū)域無法直接訪問存儲網(wǎng)站內(nèi)容和其他關(guān)鍵信息的WordPress 數(shù)據(jù)庫。
為了正常運行,WordPress 儀表板需要能夠與服務(wù)器通信以發(fā)送和接收數(shù)據(jù)。WordPress Heartbeat API 等應(yīng)用程序編程接口 (API) 使實時接收更新成為可能,而無需重新加載整個頁面來顯示任何新信息。
為了提供無縫的用戶體驗,WordPress 儀表板向后臺服務(wù)器發(fā)送請求的頻率足以消除已登錄并在網(wǎng)站上工作的 WordPress 用戶的任何更新延遲。Heartbeat API 將每 15 到 120 秒向服務(wù)器發(fā)送請求和 API 調(diào)用。
WordPress Heartbeat API 的三個主要功能
WordPress Heartbeat API 提供三個關(guān)鍵功能,使網(wǎng)站管理更加輕松便捷。這些功能是自動保存、內(nèi)容鎖定和實時儀表板通知。它們對于有多個用戶同時登錄和活動的社區(qū)或協(xié)作編輯的網(wǎng)站尤為重要。
1. 自動保存和修訂
自動保存和修訂是 WordPress Heartbeat API 提供的主要功能之一。每當(dāng)用戶在塊編輯器中工作時,WordPress 每 60 秒執(zhí)行一次內(nèi)容自動保存。這確保沒有任何更改未保存。通過每分鐘向服務(wù)器發(fā)送請求,WordPress Heartbeat API 將帖子或頁面的工作副本保存到其數(shù)據(jù)庫中,該副本將存儲在那里,直到運行新的自動保存。
由 Heartbeat API 提供支持的 WordPress 自動保存非常有用。它們可以在瀏覽器崩潰或連接問題時防止數(shù)據(jù)丟失。自動保存不會替換用戶創(chuàng)建的任何修訂,也不會累積在數(shù)據(jù)庫中。
2.內(nèi)容鎖定
內(nèi)容鎖定是 WordPress Heartbeat API 的另一個功能,可以為 WordPress 網(wǎng)站所有者提供更好的編輯體驗。如果當(dāng)前正在編輯帖子或頁面,WordPress 將鎖定它以防止其他用戶對其進行更改。WordPress Heartbeat API 將每 15 秒向服務(wù)器發(fā)送一次請求。如果另一個用戶打開鎖定的內(nèi)容進行編輯,它將顯示一條通知。
3.實時儀表板通知
WordPress Heartbeat API 支持實時儀表板通知,包括由插件發(fā)送的通知。Heartbeat API 提供的客戶端-服務(wù)器通信的可靠性已導(dǎo)致成千上萬的 WordPress 插件開發(fā)人員將其集成到他們的應(yīng)用程序中。
網(wǎng)站管理區(qū)域中 WordPress Heartbeat API 調(diào)用的默認(rèn)間隔為 15 秒。希望使用 API 功能的插件開發(fā)人員可以配置自定義間隔,以便在客戶端應(yīng)用程序和服務(wù)器之間交換數(shù)據(jù)。
WordPress Heartbeat API 如何工作?
WordPress Heartbeat API 使用 AJAX(異步 JavaScript 和 XML)從管理儀表板與服務(wù)器通信。應(yīng)用程序編程接口收集數(shù)據(jù)并通過所謂的 jQuery 事件發(fā)送數(shù)據(jù)。admin-ajax 處理程序接收數(shù)據(jù)并在服務(wù)器端處理它,隨后準(zhǔn)備并返回 JSON 格式的響應(yīng)。
當(dāng)加載 WordPress 儀表板時,客戶端代碼會設(shè)置一個間隔,也稱為滴答,每 15 到 120 秒運行一次,具體取決于任務(wù)。Heartbeat API 代碼的任務(wù)是在客戶端收集數(shù)據(jù)并將其傳送到服務(wù)器以接收更新。
Heartbeat API 調(diào)用的總數(shù)取決于同時在網(wǎng)站上工作的活躍用戶數(shù)。這與加載的 WordPress 儀表板實例數(shù)相同。在多個瀏覽器窗口中打開 WordPress 管理區(qū)域會創(chuàng)建相同數(shù)量的 Heartbeat API 調(diào)用,就好像多個用戶同時登錄到網(wǎng)站后端并執(zhí)行任務(wù)一樣。
為什么要限制 WordPress Heartbeat API 調(diào)用?
限制 WordPress Heartbeat API 調(diào)用可以幫助加速分配了非常有限的服務(wù)器資源池的 WordPress 站點,尤其是在 CPU 時間方面。雖然 Heartbeat API 不太可能是網(wǎng)站性能不佳背后的關(guān)鍵問題,但絕對值得考慮。
每次 Heartbeat API 與服務(wù)器通信時,都會向 wp-admin 中的 admin-ajax.php 文件發(fā)出 POST HTTP 請求。由于 Heartbeat API 調(diào)用每 15-120 秒發(fā)送到服務(wù)器一次,如果有多個活動管理員用戶,調(diào)用次數(shù)會增加,API 會使服務(wù)器過載,導(dǎo)致 CPU 和系統(tǒng)內(nèi)存使用率過高。
一些 WordPress 網(wǎng)站所有者甚至?xí)?Heartbeat API 活動誤認(rèn)為是正在進行的 DDOS 攻擊。WordPress Heartbeat API 請求無法緩存,這樣每次調(diào)用都會占用一定的服務(wù)器資源。如果服務(wù)器主動使用其資源來處理 API 調(diào)用,您的客戶在瀏覽您的網(wǎng)站時可能會遇到內(nèi)容呈現(xiàn)延遲。
禁用 Heartbeat API 前需要考慮的三件事
完全禁用 Heartbeat API 很少是一個好主意。在大多數(shù)情況下,WordPress 儀表板將失去與服務(wù)器實時通信的能力。禁用 Heartbeat API 后,您將無法再接收通知。此外,您將無法利用內(nèi)容鎖定、自動保存和修訂。
在禁用 Heartbeat API 或限制其活動之前要考慮的三個關(guān)鍵事項是:
- 托管。查看為您的網(wǎng)站分配了多少 CPU 時間和系統(tǒng)內(nèi)存。您的網(wǎng)站可以創(chuàng)建的進程數(shù)量是否有限制?
- 花費在網(wǎng)站管理上的時間。您在管理和內(nèi)容發(fā)布上花費了多少時間?有多少活躍用戶經(jīng)常同時在 WordPress 儀表板和后端界面工作?
- 每天收到的流量。您的 WordPress 網(wǎng)站每天接待多少訪問者?您是否有適當(dāng)?shù)木彺娼鉀Q方案來減輕服務(wù)器上的負(fù)載?
根據(jù)網(wǎng)站類型和您當(dāng)前的托管設(shè)置,限制 WordPress Heartbeat API 調(diào)用的數(shù)量將對整體性能產(chǎn)生不同的影響。如果您正在運行一個資源密集型 WordPress 站點,多個用戶執(zhí)行定期維護和發(fā)布內(nèi)容,減少 Heartbeat API 調(diào)用的數(shù)量可能非常有益。它還可以幫助您避免為了適應(yīng)不斷增加的流量而增加托管成本。
如何使用插件管理 WordPress Heartbeat API
管理 WordPress Heartbeat API 請求的最簡單方法是使用為此設(shè)計的 WordPress 插件。您可以利用多種不同的解決方案。由WP Rocket開發(fā)的 Heartbeat Control是最好和最受歡迎的之一。
注:如果你已經(jīng)使用了 WP Rocket 緩存插件,已經(jīng)內(nèi)置了 Heartbeat API 功能,無需再使用獨立的插件。
從 WordPress 儀表板安裝并激活 Heartbeat Control 插件。導(dǎo)航到設(shè)置 > 心跳控制以打開插件的配置。Heartbeat Control 允許您使用以下選項在網(wǎng)站前端、WordPress 儀表板和塊編輯器中管理 Heartbeat API 的活動:
- 允許心跳。如果啟用此選項,插件將不會以任何方式限制 Heartbeat API 調(diào)用。
- 禁用心跳。禁用 Heartbeat 將阻止 WordPress 網(wǎng)站所選區(qū)域中的所有 API 調(diào)用。
- 修改心跳。您可以為 WordPress Heartbeat API 調(diào)用設(shè)置自定義間隔,范圍從 15 到 300 秒。

大多數(shù)時候,為 WordPress Heartbeat API 調(diào)用配置更大的間隔是最好的做法。例如,將網(wǎng)站所有三個區(qū)域的 API 調(diào)用次數(shù)限制為每五分鐘一次,對整體性能的影響與完全禁用 Heartbeat API 相同。
請注意,限制塊編輯器中的 Heartbeat API 活動可能需要您更頻繁地保存修訂以避免丟失對您正在編輯的內(nèi)容的任何更改。如果您不依賴自動保存并且不需要內(nèi)容鎖定,您可以在古騰堡中完全禁用 WordPress Heartbeat API。
如何在沒有插件的情況下限制 WordPress Heartbeat API 調(diào)用
您可以使用WordPress 掛鉤在沒有插??件的情況下限制 WordPress Heartbeat API 調(diào)用。在您網(wǎng)站的活動主題 functions.php 文件中添加幾行代碼可以幫助您禁用 Heartbeat API 或指定 API 調(diào)用的自定義間隔。
WordPress 帶有內(nèi)置的主題編輯器,允許您從管理儀表板修改 functions.php。但是,大多數(shù) WordPress 安全插件會禁用此功能以保護您的網(wǎng)站,以防它受到威脅。
您可以使用主機控制面板提供的文件管理器界面或通過 FTP 或 SSH 連接到您的網(wǎng)站文件來編輯文件。
請注意,添加到 functions.php 文件的任何代碼很可能會被主題的下一次更新覆蓋。因此,使用插件管理 WordPress Heartbeat API 可能會更好。如果您使用子主題,您可以更改其 functions.php 文件,而不會在父主題更新時有被覆蓋的風(fēng)險。
禁用Heartbeat API
添加下面的操作允許您停止 Heartbeat API,有效地禁用所有 API 調(diào)用。為此,將下面的代碼片段添加到 functions.php 的底部。
function wpdx_stop_heartbeat() {
wp_deregister_script('heartbeat');
}
add_action('init', 'wpdx_stop_heartbeat', 1);
您可以用相同的方式禁用 WordPress Heartbeat API 中的特定功能。
function wpdx_disable_autosave() {
wp_deregister_script('autosave');
}
add_action('admin_init', 'wpdx_disable_autosave');
為 Heartbeat API 調(diào)用配置自定義間隔
要限制 WordPress Heartbeat API 調(diào)用,您可以指定一個過濾器,該過濾器將為 API 請求配置自定義間隔。以下代碼片段將 Heartbeat API 調(diào)用限制為每分鐘一個請求。
function wpdx_set_heartbeat_time_interval($settings) {
$settings['interval']=60;
return $settings;
}
add_filter('heartbeat_settings', 'wpdx_set_heartbeat_time_interval');
為 WordPress 自動保存配置自定義間隔
WordPress 允許您通過重新定義 AUTOSAVE_INTERVAL 常量來配置自動保存的自定義間隔。與其他常量類似,您可以通過將以下行添加到主WordPress 配置文件來為其分配新值:
define('AUTOSAVE_INTERVAL', 300);
您可以為間隔分配一個更大的值,例如 3600,即一個小時,以完全禁用 WordPress 自動保存。在 wp-config.php 中配置的 WordPress 常量在任何 WordPress 更新期間都不會被修改。您以后不必重新定義它們。
總結(jié)
WordPress 的 Heartbeat API 是 WordPress 核心內(nèi)置的關(guān)鍵功能之一,可使用 AJAX 調(diào)用實現(xiàn)實時客戶端-服務(wù)器通信。應(yīng)用程序編程接口允許 WordPress 在服務(wù)器和 WordPress 儀表板之間交換數(shù)據(jù),以提供更好的管理體驗。
Heartbeat API 每分鐘多次向服務(wù)器發(fā)送請求。這會導(dǎo)致服務(wù)器負(fù)載增加和性能下降。您可以通過使用插件、添加 WordPress 掛鉤或定義 WordPress 常量來限制 Heartbeat API 調(diào)用。




