新聞中心

創(chuàng)新互聯(lián)公司是專業(yè)的鞏義網站建設公司,鞏義接單;提供網站設計制作、網站建設,網頁設計,網站設計,建網站,PHP網站建設等專業(yè)做網站服務;采用PHP框架,可快速的進行鞏義網站開發(fā)網頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網站,專業(yè)的做網站團隊,希望更多企業(yè)前來合作!
Ajax是一種基于JavaScript的Web技術,可幫助您構建動態(tài)和交互式網站。wordpress使用Ajax為其許多核心管理區(qū)域功能提供支持,例如自動保存文章、用戶會話管理和通知。
默認情況下,WordPress通過admin-ajax.php位于站點/wp-admin目錄中的文件引導所有Ajax調用。
大量同時發(fā)生的Ajax請求可能會導致高admin-ajax.php使用率,從而導致服務器和網站的速度大大降低。這是許多未優(yōu)化的WordPress網站面臨的最常見問題之一。通常,它表現(xiàn)為網站緩慢或HTTP 5xx錯誤(主要是504或502錯誤)。
在本文中,您將了解WordPress的admin-ajax.php文件、它的工作原理、它的優(yōu)點和缺點,以及如何診斷和修復高admin-ajax.php使用率問題。
admin-ajax.php文件是什么?
admin-ajax.php文件包含在WordPress上路由Ajax請求的所有代碼。它的主要目的是使用Ajax在客戶端和服務器之間建立連接。WordPress使用它來刷新頁面內容而無需重新加載,從而使其動態(tài)且與用戶交互。
Admin Ajax如何在WordPress上工作的基本概述
由于WordPress核心已經使用Ajax為其各種后端功能提供支持,因此您可以使用相同的功能在WordPress上使用Ajax。您需要做的就是注冊一個操作,將其指向您站點的admin-ajax.php文件,并定義您希望它如何返回值。您可以將其設置為返回HTML、JSON甚至XML。
WordPress中的admin-ajax.php文件
根據WordPress Trac,admin-ajax.php文件首次出現(xiàn)在WordPress 2.1中。它在WordPress開發(fā)社區(qū)中也稱為Ajax Admin。
檢查Ajax使用情況
上面的圖表只顯示了admin-ajax.php請求的數(shù)量,而不是它們可能來自哪里。這是查看峰值何時發(fā)生的好方法。您可以將其與本文中提到的其他技術結合使用,以縮小主要原因。
在Chrome DevTools中檢查admin-ajax.php請求的數(shù)量
您還可以使用Chrome DevTools查看有多少請求被發(fā)送到admin-ajax.php. 您還可以查看“Network”部分下的“Timings”選項卡,了解處理這些請求所需的時間。
至于admin-ajax.php高使用率背后的確切原因,主要有兩個主要原因:一是前端,二是后端。我們將在下面討論兩者。
如何在WordPress上診斷admin-ajax.php高頻率使用問題
第三方插件是admin-ajax.php使用率高的最常見原因之一。通常,此問題會出現(xiàn)在站點的前端,并經常出現(xiàn)在速度測試報告中。
但是插件并不是這里唯一的罪魁禍首,因為主題、WordPress 核心、網絡服務器和DDoS攻擊也可能是Admin Ajax使用率高的原因。
讓我們更詳細地探索它們。
如何確定插件和主題的admin-ajax.php使用率高的來源
WordPress.org插件庫中的Ajax驅動插件
WordPress開發(fā)人員經常使用Ajax來創(chuàng)建動態(tài)和交互式插件和主題。一些流行的示例包括添加實時搜索、產品過濾器、無限滾動、動態(tài)購物車和聊天框等功能。
僅僅因為插件使用Ajax并不意味著它會減慢您的站點的速度。
在WebPageTest報告中查看admin-ajax.php請求
通常,Admin Ajax在頁面加載結束時加載。此外,您可以將Ajax請求設置為異步加載,因此它對用戶感知的頁面性能幾乎沒有影響。
正如您在上面的WebPageTest報告中看到的admin-ajax.php,在請求隊列的末尾加載,但它仍然需要780毫秒。僅一個請求就需要很多時間。
GTmetrix報告表明admin-ajax.php使用率嚴重飆升
當開發(fā)人員沒有在WordPress上正確實現(xiàn)Ajax時,可能會導致嚴重的性能問題。上面的GTmetrix報告就是這種行為的一個完美例子。
您還可以使用GTmetrix來挖掘單個文章和響應數(shù)據。您可以使用此功能查明導致問題的原因。
為此,請轉到GTmetrix報告的Waterfall選項卡,然后找到并單擊POST admin-ajax.php項。您將看到此請求的三個選項卡:標題、發(fā)布和響應。
POST admin-ajax.php請求的Headers數(shù)據
查看請求的Post和Response選項卡將為您提供一些提示,以找出性能問題背后的原因。對于此站點,您可以在“Response”選項卡中看到線索。
POST admin-ajax.php請求的響應數(shù)據
您可以看到響應的一部分與id設置為“fusion-form-nonce-656”的輸入標簽有關。
快速搜索這條線索將帶您到ThemeFusion的網站,Avada主題的創(chuàng)建者。因此,您可以得出結論,該請求來自主題,或者與它捆綁的任何插件。
在這種情況下,您必須首先確保Avada主題及其所有相關插件已完全更新。如果這不能解決問題,那么您可以嘗試禁用主題,看看是否可以解決問題。
與禁用插件不同,在大多數(shù)情況下禁用主題是不可行的。因此,嘗試優(yōu)化主題以消除任何瓶頸。您還可以聯(lián)系主題的支持團隊,看看他們是否可以提出更好的解決方案。
在GTmetrix中測試另一個慢速網站導致發(fā)現(xiàn)與Visual Composer頁面構建器和通知欄插件類似的問題。
另一個POST admin-ajax.php請求的響應數(shù)據
POST admin-ajax.php請求的Post數(shù)據
值得慶幸的是,如果您無法解決插件的問題,您最喜歡有許多可供嘗試的替代插件。例如,當涉及到頁面構建器時,您還可以嘗試使用Beaver Builder或Elementor。
如何確定admin-ajax.php高使用率的來源
有時,速度測試報告中顯示的Post和Response數(shù)據可能并不那么清晰和直接。在這里,找到高admin-ajax.php使用率的來源并不容易。在這種情況下,你總是可以用老派的方式來做。
禁用您網站的所有插件,清除您網站的緩存(如果有),然后再次運行速度測試。如果admin-ajax.php仍然存在,那么最有可能的罪魁禍首是主題。但是如果找不到,那么你必須一個一個地激活每個插件并每次運行速度測試。通過消除過程,您將鎖定問題的根源。
使用admin-ajax.php診斷后端服務器問題
admin-ajax.php高使用率的第二個最常見原因是WordPress Heartbeat API生成頻繁的Ajax調用,導致服務器上的CPU使用率高。通常,這是由于許多用戶登錄到WordPress后端儀表盤造成的。因此,您不會在速度測試中看到這一點。
默認情況下,Heartbeat API的admin-ajax.php每15秒輪詢一次文件以自動保存文章或頁面。如果您使用的是共享托管服務器,那么您的站點專用的服務器資源并不多。如果您正在編輯帖子或頁面并長時間打開選項卡,則可能會產生大量Admin Ajax請求。
例如,當您撰寫或編輯文章時,僅一個用戶就可以在一小時內生成240個請求!
頻繁自動保存admin-ajax.php請求
后端有很多請求,只有一個用戶?,F(xiàn)在想象一個有多個編輯器同時登錄的站點。這樣的站點可以快速增加Ajax請求,從而產生高CPU 使用率。
DARTDRones擴展其WooCommerce網站以在Shark Tank上露面時實際上遇到了這個問題。
他們的admin-ajax.php在一天內接到了4,100多個電話,只有2,000名獨立訪客。這是一個微弱的請求訪問比率。
dartdrones.com上大量使用admin-ajax.php
我們注意到/wp-admin引用URL并正確確定了根本原因。這些請求是由于DARTDRones的管理員和編輯經常更新網站以期待節(jié)目的播出。
WordPress很久以前就部分修復了這個Heartbeat API問題。例如,您可以在資源有限的主機上減少Heartbeat API生成的請求頻率。它還會在鍵盤/鼠標/觸摸不活動一小時后自行暫停。
使用Heartbeat Control Plugin減少Ajax請求
您可以使用WP Rocket的Heartbeat Control插件輕松解決此問題。它允許您只需點擊幾下即可禁用或修改Heartbeat API的頻率。
Heartbeat Control插件
安裝并激活Heartbeat Control插件后,您可以在WordPress儀表盤、站點前端和文章編輯器上管理Heartbeat API的頻率。
Heartbeat Control插件的“常規(guī)設置”儀表盤
如果您的服務器CPU資源有限,我建議您在WordPress儀表板和前端都Disable Heartbeat。您還可以修改“文章編輯器”選項的Heartbeat頻率并將其增加到30秒(甚至60秒)。頻率越高,使用的服務器資源節(jié)省的越多。
您必須使用的確切設置因站點而異。如果您不確定要使用什么,您可以咨詢您的Web開發(fā)人員。
由于DDoS攻擊或垃圾郵件機器人導致的高流量
用DDoS攻擊或垃圾郵件機器人淹沒您的網站也會導致高admin-ajax.php使用率。但是,此類攻擊不一定針對增加的Admin Ajax請求。這只是附帶損害。
如果您的站點受到DDoS攻擊,您的首要任務應該是將其置于強大的CDN/WAF之后,例如Cloudflare或Sucuri。
要詳細了解如何保護您的網站免受此類惡意攻擊,您可以參考我們關于如何阻止DDoS攻擊的深入指南。
小結
WordPress在其Heartbeat API中使用Ajax來實現(xiàn)其許多核心功能。但是,如果使用不當,它可能會導致加載時間增加。這通常是由于對文件的高頻率請求造成的admin-ajax.php。
在本文中,您了解了高admin-ajax.php使用率的各種原因、如何診斷導致此癥狀的原因以及如何修復它。在大多數(shù)情況下,遵循本指南應該可以讓您的網站立即恢復并順利運行。
但是,在某些情況下,升級到具有更高資源的服務器是唯一可行的解??決方案。特別是對于要求苛刻的用例,例如電子商務和會員網站。如果您正在運行這樣的站點,請考慮升級到在處理這些類型的性能問題方面經驗豐富的托管WordPress主機。
文章題目:如何診斷WordPress站點Admin-Ajax使用率過高問題
當前地址:http://fisionsoft.com.cn/article/djscohi.html


咨詢
建站咨詢
