如何在WordPress網站上診斷高Admin-Ajax使用率

Ajax是基於JavaScript的Web技術,可幫助您構建動態和互動式的網站。WordPress使用Ajax為其許多核心管理區域功能提供支持,例如自動保存帖子,用戶會話管理和通知。

默認情況下,WordPress通過站點/ wp-admin目錄中的admin-ajax.php文件定向所有Ajax調用。

大量同時Ajax請求可能導致admin-ajax.php的大量使用,從而導致伺服器和網站的運行速度大大降低。這是許多未優化的WordPress網站面臨的最常見問題之一。通常,它表現為緩慢的網站或HTTP 5xx錯誤(主要是504或502錯誤)。

在本文中,您將了解WordPress的admin-ajax.php文件,其工作方式,其優缺點以及如何診斷和修復admin-ajax.php高使用率問題。

準備好出發?讓我們開始吧!

什麼是admin-ajx.php文件?

admin-ajax.php文件包含用於在WordPress上路由Ajax請求的所有代碼。它的主要目的是使用Ajax在客戶端和伺服器之間建立連接。WordPress使用它來刷新頁面的內容,而無需重新載入它,從而使其對用戶具有動態性和交互性。

Admin Ajax如何在WordPress上工作的基本概述

Admin Ajax如何在WordPress上工作的基本概述

由於WordPress核心已經使用Ajax來支持其各種後端功能,因此您可以使用相同的功能在WordPress上使用Ajax。您需要做的就是註冊一個動作,將其指向您站點的admin-ajax.php文件,然後定義您希望它如何返回值。您可以將其設置為返回HTML,JSON甚至XML。

根據WordPress Trac,admin-ajax.php文件首先出現在WordPress 2.1中。在WordPress開發社區中,它也被稱為Ajax Admin。

Make-WordPress-Core-Trac-admin-ajax.php-File.png 屏幕。

在MyKinsta儀錶板中檢查Ajax使用情況

在MyKinsta儀錶板中檢查Ajax使用情況

上面的圖表僅顯示admin-ajax.php請求的數量,而不顯示它們可能來自何處。這是查看尖峰何時發生的好方法。您可以將其與本文中提到的其他技術結合使用,以縮小主要原因。

檢查Chrome DevTools中admin-ajax.php請求的數量

檢查Chrome DevTools中admin-ajax.php請求的數量

您也可以使用Chrome DevTools查看發送到admin-ajax.php的請求數。您還可以查看「網路」部分下的「時間」標籤,以了解處理這些請求所花費的時間。

至於找到高使用率admin-ajax.php的確切原因,主要有兩個主要原因:一個是由於前端,另一個是由於後端。我們將在下面進行討論。

Ajax提供了許多主要的WordPress功能…但是,當有太多請求進入時,它也會大大降低您的網站速度。?在此處了解如何解決此問題並優化您的Ajax使用率?單擊鳴叫
如何在WordPress上調試高admin-ajax.php使用率

第三方插件是admin-ajax.php使用率高的最常見原因之一。通常,此問題可以在網站的前端看到,並經常出現在速度測試報告中。

但是插件並不是唯一的罪魁禍首,因為主題,WordPress核心,Web伺服器和DDoS攻擊也可能是Admin Ajax使用率高的原因。

讓我們更詳細地探討它們。

如何確定插件和主題的高admin-ajax.php使用率的來源

WordPress.org存儲庫中由Ajax驅動的插件

WordPress.org存儲庫中由Ajax驅動的插件

WordPress開發人員經常使用Ajax來創建動態和互動式的插件和主題。一些受歡迎的示例包括添加功能,例如實時搜索,產品過濾器,無限滾動,動態購物車和聊天框。

使用WordPress,我們的流量增長了1,187%。
我們將向您展示如何。

加入20,000多個其他人,他們每周都會收到有關WordPress內部技巧的新聞!

現在訂閱

成功!感謝您的訂閱

您將在一周內收到下一期的Kinsta新聞通訊。

訂閱Kinsta新聞通訊

訂閱

我同意條款和條件以及隱私政策

僅僅因為插件使用Ajax並不意味著它會減慢您的網站速度。

WebPageTest報告中的admin-ajax.php請求

在WebPageTest報告中查看admin-ajax.php請求

通常,Admin Ajax將在頁面載入結束時載入。另外,您可以將Ajax請求設置為非同步載入,因此對用戶感知的頁面性能幾乎沒有影響。

如您在上面的WebPageTest報告中所看到的,admin-ajax.php將在請求隊列的末尾載入,但是仍然需要780 ms。僅一個請求就花了很多時間。

GTmetrix報告表明嚴重的admin-ajax.php使用高峰

GTmetrix報告表明嚴重的admin-ajax.php使用高峰

當開發人員無法在WordPress上正確實現Ajax時,可能會導致嚴重的性能問題。上面的GTmetrix報告是這種行為的完美示例。

您還可以使用GTmetrix來挖掘各個帖子和響應數據。您可以使用此功能來查明是什麼原因導致了問題。

為此,請轉到GTmetrix報告的「瀑布」選項卡,然後找到並單擊POST admin-ajax.php項目。您將看到此請求的三個選項卡:標頭,發布和響應。

POST admin-ajax.php請求的標頭數據

POST admin-ajax.php請求的標頭數據

查看請求的「發布和響應」選項卡將為您提供一些提示,以找出性能問題背後的原因。對於此站點,您可以在「響應」選項卡中查看線索。

POST admin-ajax.php請求的響應數據

POST admin-ajax.php請求的響應數據

您可以看到,響應的一部分與ID設置為「 fusion-form-nonce-656」的輸入標籤有關。

快速搜索此線索將帶您進入ThemeFusion的網站,該網站是Avada主題的創建者。因此,您可以得出結論,該請求源自主題或與其捆綁在一起的任何插件。

在這種情況下,您必須首先確保Avada主題及其所有相關插件已完全更新。如果這樣不能解決問題,則可以嘗試禁用主題,看看是否可以解決問題。

與禁用插件不同,在大多數情況下,禁用主題是不可行的。因此,請嘗試優化主題以消除任何瓶頸。您還可以與主題的支持團隊聯繫,以了解他們是否可以提出更好的解決方案。

在GTmetrix中測試另一個緩慢的網站導致使用Visual Composer頁面構建器和Notification Bar插件發現類似問題。

另一個POST admin-ajax.php請求的響應數據

另一個POST admin-ajax.php請求的響應數據

POST admin-ajax.php請求的發布數據

POST admin-ajax.php請求的發布數據

值得慶幸的是,如果您無法解決該插件的問題,那麼您最喜歡有許多可供選擇的替代插件供您試用。例如,對於頁面構建器,您還可以嘗試Beaver Builder或Elementor。

如何確定高級admin-ajax.php的來源

有時,速度測試報告中顯示的「發布和響應」數據可能不那麼清晰直接。在這裡,找到高admin-ajax.php用法的來源並不是那麼容易。在這種情況下,您始終可以按照舊的方式進行操作。

禁用網站的所有插件,清除網站的緩存(如果有),然後再次運行速度測試。如果admin-ajax.php仍然存在,則最可能的罪魁禍首是主題。但是,如果找不到它,那麼您必須一個一個地激活每個插件,並每次都運行速度測試。通過消除過程,您可以鎖定問題的根源。

提示:使用暫存環境(例如Kinsta的暫存環境)是在您的站點上運行測試而不影響實際站點的好方法。在臨時環境中確定原因並解決問題後,可以將更改推送到實際站點。

使用admin-ajax.php診斷後端伺服器問題

高admin-ajax.php使用率的第二個最常見的原因是WordPress Heartbeat API頻繁生成Ajax調用,從而導致伺服器上的CPU使用率很高。通常,這是由於許多用戶登錄WordPress後端儀錶板引起的。因此,您不會在速度測試中看到這一點。

默認情況下,Heartbeat API每15秒輪詢admin-ajax.php文件以自動保存帖子或頁面。如果您使用共享主機伺服器,則您沒有太多專用於站點的伺服器資源。如果您正在編輯帖子或頁面,並且在很長一段時間內都未打開選項卡,那麼它可能會堆積很多Admin Ajax請求。

厭倦了您的WordPress網站出現問題?通過Kinsta獲得最好,最快的託管支持!查看我們的計劃

例如,當您撰寫或編輯帖子時,一個用戶一個小時就能產生240個請求!

頻繁自動保存admin-ajax.php請求

頻繁自動保存admin-ajax.php請求

後端只有一個用戶的許多請求。現在想像一個有多個編輯器同時登錄的站點。這樣的站點可以迅速處理Ajax請求,從而產生很高的CPU使用率。

Kinsta實際上在幫助DARTDrones擴展其WooCommerce網站以在Shark Tank上露面時遇到了這個問題。

他們一天只接待了2,000位唯一身份訪問者,就收到了4,100多個admin-ajax.php電話。要求訪問的比率很低。

dartdrones.com上大量的admin-ajax.php使用

dartdrones.com上大量的admin-ajax.php使用

Kinsta的團隊注意到/ wp-admin引薦來源網址,並正確確定了根本原因。這些要求歸功於DARTDrones的管理員和編輯人員經常在展會現場更新網站。

WordPress早已部分修復了此Heartbeat API問題。例如,您可以減少心跳API在資源有限的主機上生成請求的頻率。一小時不使用鍵盤/滑鼠/觸摸後,它也會自動掛起。

使用心跳控制插件減少Ajax請求

您可以使用WP Rocket的Heartbeat Control插件輕鬆解決此問題。它使您只需單擊幾下即可禁用或修改Heartbeat API的頻率。

心跳控制插件

心跳控制插件

安裝並激活Heartbeat Control插件後,您可以在WordPress儀錶板,網站前端和Post編輯器上管理Heartbeat API的頻率。

心跳控制插件的「常規設置」儀錶板

心跳控制插件的「常規設置」儀錶板

如果伺服器的CPU資源有限,建議您在WordPress儀錶板和Frontend上均禁用心跳。您還可以為「後期編輯器」選項修改心跳頻率,並將其增加到30秒(甚至60秒)。頻率越高,所用伺服器資源的節省就越大。

您必須使用的確切設置因站點而異。如果不確定使用什麼,可以諮詢您的Web開發人員。

由於DDoS攻擊或垃圾郵件機器人導致的高流量

DDoS攻擊或垃圾郵件機器人使您的網站不堪重負,也可能導致admin-ajax.php使用率很高。但是,這種攻擊不一定以增加的Admin Ajax請求為目標。這只是附帶損害。

如果您的站點受到DDoS攻擊,那麼您的首要任務應該是將其置於強大的CDN / WAF(如Cloudflare或Sucuri)之後。Kinsta的每個託管計劃還包括Kinsta CDN,它可以幫助您在很大程度上減輕網站資源的負擔。

要了解有關如何保護您的網站免遭此類惡意攻擊的更多信息,可以參考我們有關如何阻止DDoS攻擊的深入指南。

如果您看到伺服器和網站的速度變慢,則可能是由於Ajax請求過多所致。準備使用本指南進行診斷和修復!單擊以發布
摘要

WordPress在其Heartbeat API中使用Ajax來實現其許多核心功能。但是,如果使用不正確,則會導致載入時間增加。這通常是由於對admin-ajax.php文件的請求頻率很高引起的。

在本文中,您了解了admin-ajax.php使用率較高的各種原因,如何診斷導致此癥狀的原因,以及如何解決該問題。在大多數情況下,遵循本指南可以使您的網站立即恢復正常運行。

但是,在某些情況下,升級到具有更高資源的伺服器是唯一可行的解​​決方案。尤其適用於要求苛刻的用例,例如電子商務和會員網站。如果您正在運行這樣的站點,請考慮升級到經驗豐富的可處理此類性能問題的託管WordPress主機。

如果您仍在WordPress網站上仍在高使用admin-ajax.php的情況下掙扎,請在評論部分告訴我們。

如果您喜歡這篇文章,那麼您會喜歡Kinsta的WordPress託管平台。加速您的網站並獲得我們經驗豐富的WordPress團隊的24/7支持。我們基於Google Cloud的基礎架構專註於自動擴展,性能和安全性。讓我們向您展示Kinsta的與眾不同!查看我們的計劃

Total
0
Shares
相關文章