如何管理 WordPress Heartbeat API

已發表: 2023-01-31

WordPress Heartbeat API 已經存在了將近十年。 它提供了 WordPress 儀表板和主機服務器之間的無縫實時通信。 Heartbeat API 內置於 WordPress 核心,提供強大的功能,可以顯著改善網站管理體驗。

然而,這種力量是有代價的。 它是保持通信順暢運行所需的服務器資源數量。 運行資源密集型網站或讓您的託管服務提供商對內存和 CPU 時間施加嚴格限制可能會導致明顯的性能下降,而 Heartbeat API 可能會發揮作用。

在本指南中,我們將揭示 WordPress Heartbeat API 的潛力及其在 WordPress 生態系統中的作用。 您將了解 Heartbeat API 的工作原理。 您還將了解為什麼您可能需要考慮限制其在您的 WordPress 網站上的活動。 這將幫助您獲得更好的性能,而無需升級您的託管計劃。

什麼是 WordPress 心跳 API?

WordPress Heartbeat API 是內置於 WordPress 核心的接口,可實現服務器和 WordPress 儀表板之間的實時通信。 Heartbeat API 於 2013 年隨 WordPress 3.6 的發布首次引入。 它對內容管理和網站管理的其他關鍵領域進行了重大改進。

WordPress心跳API

為什麼 Heartbeat API 如此重要?

WordPress 儀表板主要是一個客戶端應用程序。 這意味著大部分操作發生在用戶的瀏覽器中。 作為前端應用程序,WordPress 管理區域無法直接訪問存儲網站內容和其他關鍵信息的 WordPress 數據庫。

為了正常運行,WordPress 儀表板需要能夠與服務器通信以發送和接收數據。 WordPress Heartbeat API 等應用程序編程接口 (API) 使實時接收更新成為可能,而無需重新加載整個頁面來顯示任何新信息。

為了提供無縫的用戶體驗,WordPress 儀表板向後台服務器發送請求的頻率足以消除已登錄並在網站上工作的 WordPress 用戶的任何更新延遲。 Heartbeat API 將每 15 到 120 秒向服務器發送請求和 API 調用。

WordPress Heartbeat API 的三個主要功能

WordPress Heartbeat API 支持三個關鍵功能,使網站管理更加輕鬆便捷。 這些功能是自動保存、內容鎖定和實時儀表板通知。 它們對於有多個用戶同時登錄和活動的社區或協作編輯的網站尤為重要。

1. 自動保存和修訂

自動保存和修訂是 WordPress Heartbeat API 提供的主要功能之一。 每當用戶在塊編輯器中工作時,WordPress 每 60 秒執行一次內容自動保存。 這確保沒有任何更改未保存。 通過每分鐘向服務器發送請求,WordPress Heartbeat API 將帖子或頁面的工作副本保存到其數據庫中,該副本將存儲在那裡,直到運行新的自動保存。

由 Heartbeat API 提供支持的 WordPress 自動保存非常有用。 它們可以在瀏覽器崩潰或連接問題時防止數據丟失。 自動保存不會替換用戶創建的任何修訂,也不會累積在數據庫中。

2.內容鎖定

內容鎖定是 WordPress Heartbeat API 的另一個功能,可以為 WordPress 網站所有者提供更好的編輯體驗。 如果當前正在編輯帖子或頁面,WordPress 將鎖定它以防止其他用戶對其進行更改。 WordPress Heartbeat API 將每 15 秒向服務器發送一次請求。 如果另一個用戶打開鎖定的內容進行編輯,它將顯示一條通知。

3.實時儀表板通知

WordPress Heartbeat API 支持實時儀表板通知,包括由插件發送的通知。 Heartbeat API 提供的客戶端-服務器通信的可靠性已導致成千上萬的 WordPress 插件開發人員將其集成到他們的應用程序中。

網站管理區域中 WordPress Heartbeat API 調用的默認間隔為 15 秒。 希望使用 API 功能的插件開發人員可以配置自定義間隔,以便在客戶端應用程序和服務器之間交換數據。

WordPress Heartbeat API 如何工作?

WordPress Heartbeat API 使用 AJAX(異步 JavaScript 和 XML)從管理儀表板與服務器通信。 應用程序編程接口收集數據並通過所謂的 jQuery 事件發送數據。 admin-ajax 處理程序接收數據並在服務器端處理它,隨後準備並返回 JSON 格式的響應。

當加載 WordPress 儀表板時,客戶端代碼會設置一個間隔,也稱為滴答,每 15 到 120 秒運行一次,具體取決於任務。 Heartbeat API 代碼的任務是在客戶端收集數據並將其傳送到服務器以接收更新。

Heartbeat API 調用的總數取決於同時在網站上工作的活躍用戶數。 這與加載的 WordPress 儀表板實例數相同。 在多個瀏覽器窗口中打開 WordPress 管理區域會創建相同數量的 Heartbeat API 調用,就好像多個用戶同時登錄到網站後端並執行任務一樣。

為什麼要限制 WordPress Heartbeat API 調用?

限制 WordPress Heartbeat API 調用可以幫助加速分配了非常有限的服務器資源池的 WordPress 站點,尤其是在 CPU 時間方面。 雖然 Heartbeat API 不太可能是網站性能不佳背後的關鍵問題,但絕對值得考慮。

每次 Heartbeat API 與服務器通信時,都會向 wp-admin 中的 admin-ajax.php 文件發出 POST HTTP 請求。 由於 Heartbeat API 調用每 15-120 秒發送到服務器一次,如果有多個活動管理員用戶,調用次數會增加,API 會使服務器過載,導致 CPU 和系統內存使用率過高。

一些 WordPress 網站所有者甚至會將 Heartbeat API 活動誤認為是正在進行的 DDOS 攻擊。 WordPress Heartbeat API 請求無法緩存,這樣每次調用都會佔用一定的服務器資源。 如果服務器主動使用其資源來處理 API 調用,您的客戶在瀏覽您的網站時可能會遇到內容呈現延遲。

禁用 Heartbeat API 前需要考慮的三件事

完全禁用 Heartbeat API 很少是一個好主意。 在大多數情況下,WordPress 儀表板將失去與服務器實時通信的能力。 禁用 Heartbeat API 後,您將無法再接收通知。 此外,您將無法利用內容鎖定、自動保存和修訂。

在禁用 Heartbeat API 或限制其活動之前要考慮的三個關鍵事項是:

  • 託管。 查看為您的網站分配了多少 CPU 時間和系統內存。 您的網站可以創建的進程數量是否有限制?
  • 花費在網站管理上的時間。 您在管理和內容髮布上花費了多少時間? 有多少活躍用戶經常同時在 WordPress 儀表板和後端界面工作?
  • 每天收到的流量。 您的 WordPress 網站每天接待多少訪問者? 您是否有適當的緩存解決方案來減輕服務器上的負載?

根據網站類型和您當前的託管設置,限制 WordPress Heartbeat API 調用的數量將對整體性能產生不同的影響。 如果您正在運行一個資源密集型 WordPress 站點,多個用戶執行定期維護和發佈內容,減少 Heartbeat API 調用的數量可能非常有益。 它還可以幫助您避免為了適應不斷增加的流量而增加託管成本。

如何使用插件管理 WordPress Heartbeat API

管理 WordPress Heartbeat API 請求的最簡單方法是使用為此設計的 WordPress 插件。 您可以利用多種不同的解決方案。 由 WP Rocket 開發的 Heartbeat Control 是最好和最受歡迎的之一。

心跳控制

從 WordPress 儀表板安裝並激活 Heartbeat Control 插件。 導航到設置 > 心跳控制以打開插件的配置。 Heartbeat Control 允許您使用以下選項在網站前端、WordPress 儀表板和塊編輯器中管理 Heartbeat API 的活動:

  • 允許心跳。 如果啟用此選項,插件將不會以任何方式限制 Heartbeat API 調用。
  • 禁用心跳。 禁用 Heartbeat 將阻止 WordPress 網站所選區域中的所有 API 調用。
  • 修改心跳。 您可以為 WordPress Heartbeat API 調用設置自定義間隔,範圍從 15 到 300 秒。
心跳控制

大多數時候,為 WordPress Heartbeat API 調用配置更大的間隔是最好的做法。 例如,將網站所有三個區域的 API 調用次數限制為每五分鐘一次,對整體性能的影響與完全禁用 Heartbeat API 相同。

請注意,限制塊編輯器中的 Heartbeat API 活動可能需要您更頻繁地保存修訂以避免丟失對您正在編輯的內容的任何更改。 如果您不依賴自動保存並且不需要內容鎖定,您可以在古騰堡中完全禁用 WordPress Heartbeat API。

如何在沒有插件的情況下限制 WordPress Heartbeat API 調用

您可以使用 WordPress 掛鉤在沒有插件的情況下限制 WordPress Heartbeat API 調用。 在您網站的活動主題 functions.php 文件中添加幾行代碼可以幫助您禁用 Heartbeat API 或指定 API 調用的自定義間隔。

WordPress 帶有內置的主題編輯器,允許您從管理儀表板修改 functions.php。 但是,大多數 WordPress 安全插件(例如 iThemes Security Pro)會禁用此功能以在您的網站受到威脅時保護您的網站。

您可以使用主機控制面板提供的文件管理器界面或通過 FTP 或 SSH 連接到您的網站文件來編輯文件。 如果 Kadence WP 是您選擇的 WordPress 塊主題,您可以在 WordPress 內容目錄內的 Kadence 文件夾中找到 functions.php 文件。

請注意,添加到 functions.php 文件的任何代碼很可能會被主題的下一次更新覆蓋。 因此,使用插件管理 WordPress Heartbeat API 可能會更好。 如果您使用子主題,您可以更改其 functions.php 文件,而不會在父主題更新時有被覆蓋的風險。

不要忘記先保存您的 WordPress 網站的備份

保存備份是網站管理的重要組成部分。 這將使您能夠從任何錯誤中恢復並在緊急情況下快速恢復您的網站。 確保在編輯任何 WordPress 核心或主題文件之前備份您的網站。

使用 WordPress 備份插件可幫助您創建強大的備份策略。 您將在需要時隨時獲得網站的工作副本。 將您的網站備份存儲在遠程位置,並利用自定義備份計劃和 BackupBuddy 一鍵恢復。

禁用心跳 API

添加下面的操作允許您停止 Heartbeat API,有效地禁用所有 API 調用。 為此,將下面的代碼片段添加到 functions.php 的底部。

function wb_stop_heartbeat() {
 wp_deregister_script('heartbeat');
}
add_action('init', 'wb_stop_heartbeat', 1);

您可以用相同的方式禁用 WordPress Heartbeat API 中的特定功能。

function disable_autosave() {
 wp_deregister_script('autosave');
}
add_action('admin_init', 'disable_autosave');

為 Heartbeat API 調用配置自定義間隔

要限制 WordPress Heartbeat API 調用,您可以指定一個過濾器,該過濾器將為 API 請求配置自定義間隔。 以下代碼片段將 Heartbeat API 調用限制為每分鐘一個請求。

function wb_set_heartbeat_time_interval($settings) {
 $settings['interval']=60;
 return $settings;
}
add_filter('heartbeat_settings', 'wb_set_heartbeat_time_interval');

為 WordPress 自動保存配置自定義間隔

WordPress 允許您通過重新定義 AUTOSAVE_INTERVAL 常量來配置自動保存的自定義間隔。 與其他常量類似,您可以通過將以下行添加到主 WordPress 配置文件來為其分配新值:

define('AUTOSAVE_INTERVAL', 300);

您可以為間隔分配一個更大的值,例如 3600,即一個小時,以完全禁用 WordPress 自動保存。 在 wp-config.php 中配置的 WordPress 常量在任何 WordPress 更新期間都不會被修改。 您以後不必重新定義它們。

包起來

WordPress 的 Heartbeat API 是 WordPress 核心內置的關鍵功能之一,可使用 AJAX 調用實現實時客戶端-服務器通信。 應用程序編程接口允許 WordPress 在服務器和 WordPress 儀表板之間交換數據,以提供更好的管理體驗。

Heartbeat API 每分鐘多次向服務器發送請求。 這會導致服務器負載增加和性能下降。 您可以通過使用插件、添加 WordPress 掛鉤或定義 WordPress 常量來限制 Heartbeat API 調用。

可靠的網站性能至關重要,但安全性也很重要。 iThemes 將幫助保護您的 WordPress 網站的所有區域,因此您的業務無論如何都保持在線。 了解如何使用 iThemes Security Pro 保護您的在線狀態,包括多重身份驗證、文件更改監控和漏洞掃描。