Ajax là một công nghệ web dựa trên JavaScript giúp bạn xây dựng các trang web động và tương tác. WordPress sử dụng Ajax để cung cấp năng lượng cho nhiều tính năng khu vực quản trị cốt lõi của nó như tự động lưu bài đăng, quản lý phiên người dùng và thông báo.

Theo mặc định, WordPress hướng tất cả các lệnh gọi Ajax thông qua tệp admin-ajax.php nằm trong thư mục /wp-admin của trang web.

Nhiều yêu cầu Ajax đồng thời có thể dẫn đến việc sử dụng admin-ajax.php , dẫn đến máy chủ và trang web bị chậm lại đáng kể. Đó là một trong những vấn đề phổ biến nhất mà nhiều trang WordPress chưa được tối ưu hóa phải đối mặt. Thông thường, nó biểu hiện dưới dạng trang web chậm hoặc lỗi HTTP 5xx (chủ yếu là lỗi 504 hoặc 502).

Trong bài viết này, bạn sẽ tìm hiểu về tệp admin-ajax.php của WordPress, cách hoạt động, lợi ích và hạn chế của nó cũng như cách bạn có thể chẩn đoán và khắc phục sự cố sử dụng admin-ajax.php cao.

Sẵn sàng để đi? Hãy tung ra!

Tệp admin-ajax.php là gì?

Tệp admin-ajax.php chứa tất cả mã để định tuyến các yêu cầu Ajax trên WordPress. Mục đích chính của nó là thiết lập kết nối giữa máy khách và máy chủ bằng cách sử dụng Ajax. WordPress sử dụng nó để làm mới nội dung của trang mà không cần tải lại, do đó làm cho nó trở nên động và tương tác với người dùng.

A basic overview of how Admin Ajax works on WordPress
Tổng quan cơ bản về cách Admin Ajax hoạt động trên WordPress

Vì lõi WordPress đã sử dụng Ajax để cung cấp năng lượng cho các tính năng phụ trợ khác nhau của nó, bạn có thể sử dụng các chức năng tương tự để sử dụng Ajax trên WordPress. Tất cả những gì bạn cần làm là đăng ký một hành động, trỏ nó đến tệp admin-ajax.php của trang web của bạn và xác định cách bạn muốn nó trả về giá trị. Bạn có thể đặt nó để trả về HTML, JSON hoặc thậm chí là XML.

admin-ajax.php file in WordPress
tệp admin-ajax.php trong WordPress

Theo WordPress Trac, tệp admin-ajax.php lần đầu tiên xuất hiện trong WordPress 2.1. Nó còn được gọi là Quản trị viên Ajax trong cộng đồng phát triển WordPress.

 

Checking Ajax usage in MyKinsta dashboard
Kiểm tra việc sử dụng Ajax trong bảng điều khiển MyKinsta

Biểu đồ trên chỉ hiển thị số lượng yêu cầu admin-ajax.php chứ không phải chúng có thể đến từ đâu. Đó là một cách tuyệt vời để xem khi nào các đợt tăng đột biến xảy ra. Bạn có thể kết hợp nó với các kỹ thuật khác được đề cập trong bài đăng này để thu hẹp nguyên nhân chính.

Checking the number of admin-ajax.php requests in Chrome DevTools
Kiểm tra số lượng yêu cầu admin-ajax.php trong Chrome DevTools

Bạn cũng có thể sử dụng Chrome DevTools để xem có bao nhiêu yêu cầu được gửi đến admin-ajax.php . Bạn cũng có thể xem tab Thời gian trong phần Mạng để tìm hiểu xem cần bao nhiêu thời gian để xử lý các yêu cầu này.

Đối với việc tìm ra lý do chính xác đằng sau việc sử dụng admin-ajax.php , chủ yếu có hai nguyên nhân chính: một là do giao diện người dùng và một là do phụ trợ. Chúng tôi sẽ thảo luận cả hai bên dưới.

Cách gỡ lỗi mức sử dụng admin-ajax.php cao trên WordPress

Các plugin của bên thứ ba là một trong những lý do phổ biến nhất đằng sau việc sử dụng admin-ajax.php cao. Thông thường, vấn đề này được nhìn thấy trên giao diện người dùng của trang web và xuất hiện thường xuyên trong các báo cáo kiểm tra tốc độ.

Nhưng các plugin không phải là thủ phạm duy nhất ở đây như các chủ đề, lõi WordPress, máy chủ web và cuộc tấn công DDoS cũng có thể là lý do đằng sau việc sử dụng Admin Ajax cao.

Hãy cùng khám phá chúng một cách chi tiết hơn.

Cách xác định nguồn gốc của việc sử dụng cao admin-ajax.php cho các plugin và chủ đề

Ajax-powered plugins in WordPress.org repository
Các plugin được hỗ trợ bởi Ajax trong kho lưu trữ WordPress.org

Ajax thường được các nhà phát triển WordPress sử dụng để tạo các plugin và chủ đề động và tương tác. Một số ví dụ phổ biến bao gồm thêm các tính năng như tìm kiếm trực tiếp, bộ lọc sản phẩm, cuộn vô hạn, giỏ hàng động và hộp trò chuyện.

Chỉ vì một plugin sử dụng Ajax không có nghĩa là nó sẽ làm chậm trang web của bạn.

admin-ajax.php request in WebPageTest report
Xem yêu cầu admin-ajax.php trong báo cáo WebPageTest

Thông thường, Admin Ajax tải về cuối trang. Ngoài ra, bạn có thể đặt các yêu cầu Ajax tải không đồng bộ, vì vậy nó có thể có ít hoặc không ảnh hưởng đến hiệu suất được nhận thức của trang đối với người dùng.

Như bạn có thể thấy trong báo cáo WebPageTest ở trên, admin-ajax.php tải về cuối hàng đợi yêu cầu, nhưng nó vẫn mất 780 mili giây. Đó là rất nhiều thời gian cho chỉ một yêu cầu.

GTmetrix report indicating a serious admin-ajax.php usage spike
Báo cáo GTmetrix cho thấy mức tăng đột biến sử dụng admin-ajax.php

Khi các nhà phát triển không triển khai Ajax đúng cách trên WordPress, nó có thể dẫn đến các vấn đề về hiệu suất nghiêm trọng. Báo cáo GTmetrix trên là một ví dụ hoàn hảo về hành vi như vậy.

Bạn cũng có thể sử dụng GTmetrix để tìm hiểu dữ liệu bài đăng và phản hồi riêng lẻ. Bạn có thể sử dụng tính năng này để xác định nguyên nhân gây ra sự cố.

Để làm điều đó, hãy chuyển đến tab Thác của báo cáo GTmetrix, sau đó tìm và nhấp vào mục ĐĂNG admin-ajax.php . Bạn sẽ thấy ba tab cho yêu cầu này: Tiêu đề, Bài đăng và Phản hồi.

POST admin-ajax.php request’s Headers data
ĐĂNG dữ liệu Tiêu đề của yêu cầu admin-ajax.php

Kiểm tra các tab ĐăngPhản hồi của yêu cầu sẽ cung cấp cho bạn một số gợi ý để tìm ra lý do đằng sau vấn đề hiệu suất. Đối với trang web này, bạn có thể xem manh mối trong tab Phản hồi.

POST admin-ajax.php request’s Response data
POST dữ liệu phản hồi của yêu cầu admin-ajax.php

Bạn có thể thấy rằng một phần của phản hồi có liên quan đến thẻ đầu vào cóđược đặt thành “fusion-form-nonce-656”.

Đăng kí để nhận thư mới

Tìm kiếm nhanh manh mối này sẽ dẫn bạn đến trang web của ThemeFusion, những người tạo ra chủ đề Avada. Do đó, bạn có thể kết luận rằng yêu cầu bắt nguồn từ chủ đề hoặc bất kỳ plugin nào mà nó đi kèm.

Trong trường hợp như vậy, trước tiên bạn phải đảm bảo rằng chủ đề Avada và tất cả các plugin liên quan của nó được cập nhật đầy đủ. Nếu cách đó không khắc phục được sự cố, thì bạn có thể thử tắt chủ đề và xem liệu cách đó có khắc phục được sự cố hay không.

Không giống như vô hiệu hóa plugin, vô hiệu hóa chủ đề không khả thi trong hầu hết các trường hợp. Do đó, hãy thử tối ưu hóa chủ đề để loại bỏ bất kỳ nút thắt cổ chai nào. Bạn cũng có thể liên hệ với nhóm hỗ trợ của chủ đề để xem liệu họ có thể đề xuất giải pháp tốt hơn hay không.

Thử nghiệm một trang web chậm khác trong GTmetrix đã dẫn đến việc tìm thấy các vấn đề tương tự với trình tạo trang Visual Composer và các plugin Thanh thông báo.

Another POST admin-ajax.php request’s Response data
Dữ liệu phản hồi của yêu cầu POST admin-ajax.php khác
POST admin-ajax.php request’s Post data
Đăng dữ liệu bài đăng của yêu cầu admin-ajax.php

Rất may, nếu bạn không thể giải quyết sự cố với plugin, bạn thích nhất là có sẵn nhiều plugin thay thế để dùng thử. Ví dụ: khi nói đến trình tạo trang, bạn cũng có thể thử Beaver Builder hoặc Elementor.

Cách xác định nguồn gốc của High admin-ajax.php

Đôi khi, dữ liệu Đăng và Phản hồi được trình bày trong báo cáo kiểm tra tốc độ có thể không rõ ràng và đơn giản. Ở đây, việc tìm ra nguồn gốc của việc sử dụng admin-ajax.php cao không phải là dễ dàng. Trong những trường hợp như vậy, bạn luôn có thể làm theo cách cũ.

Vô hiệu hóa tất cả các plugin của trang web, xóa bộ nhớ cache của trang web (nếu có), sau đó chạy lại kiểm tra tốc độ. Nếu admin-ajax.php vẫn còn thì thủ phạm rất có thể là chủ đề. Nhưng nếu nó không được tìm thấy, thì bạn phải kích hoạt từng plugin một và chạy kiểm tra tốc độ mỗi lần. Bằng quá trình loại bỏ, bạn sẽ chốt lại nguồn gốc của vấn đề.

Mẹo: Sử dụng môi trường dàn (ví dụ: môi trường dàn của Kinsta) là một cách tuyệt vời để chạy thử nghiệm trên trang web của bạn mà không ảnh hưởng đến trang đang hoạt động của bạn. Khi bạn đã xác định nguyên nhân và khắc phục sự cố trong môi trường dàn dựng, bạn có thể đẩy các thay đổi lên trang web trực tiếp của mình.

Chẩn đoán sự cố máy chủ phụ trợ với admin-ajax.php

Lý do phổ biến thứ hai cho việc sử dụng admin-ajax.php là WordPress Heartbeat API tạo ra các cuộc gọi Ajax thường xuyên, dẫn đến việc sử dụng CPU cao trên máy chủ. Thông thường, điều này là do nhiều người dùng đã đăng nhập vào bảng điều khiển phụ trợ WordPress. Do đó, bạn sẽ không thấy điều này hiển thị trong các bài kiểm tra tốc độ.

Bạn mệt mỏi khi gặp sự cố với trang web WordPress của mình? Nhận hỗ trợ lưu trữ tốt nhất và nhanh nhất với Kinsta! Kiểm tra các kế hoạch của chúng tôi

Theo mặc định, API Heartbeat sẽ thăm dò tệp admin-ajax.php 15 giây một lần để tự động lưu các bài đăng hoặc trang. Nếu bạn đang sử dụng máy chủ lưu trữ được chia sẻ, thì bạn không có nhiều tài nguyên máy chủ dành riêng cho trang web của mình. Nếu bạn đang chỉnh sửa một bài đăng hoặc trang và để tab mở trong một khoảng thời gian đáng kể, thì nó có thể tạo ra rất nhiều yêu cầu Quản trị viên Ajax.

Ví dụ: khi bạn đang viết hoặc chỉnh sửa bài đăng, một người dùng duy nhất có thể tạo ra 240 yêu cầu trong một giờ!

Frequent autosave admin-ajax.php requests
Các yêu cầu admin-ajax.php tự động lưu thường xuyên

Đó là nhiều yêu cầu trên chương trình phụ trợ chỉ với một người dùng. Bây giờ hãy tưởng tượng một trang web có nhiều biên tập viên đăng nhập đồng thời. Một trang web như vậy có thể sắp xếp các yêu cầu Ajax nhanh chóng, tạo ra mức sử dụng CPU cao.

Kinsta thực sự đã gặp phải vấn đề này trong khi giúp DARTDrones mở rộng quy mô trang web WooCommerce của họ để xuất hiện trên Shark Tank.

Họ đã nhận được hơn 4.100 cuộc gọi admin-ajax.php trong một ngày với chỉ 2.000 người truy cập. Đó là tỷ lệ yêu cầu trên lượt truy cập yếu.

Heavy admin-ajax.php usage on dartdrones.com
Sử dụng nhiều admin-ajax.php trên dartdrones.com

Nhóm của Kinsta đã nhận thấy URL của liên kết giới thiệu / wp-admin và xác định chính xác nguyên nhân gốc rễ. Những yêu cầu này là do quản trị viên và biên tập viên của DARTDrones cập nhật trang web thường xuyên để đón đầu chương trình.

WordPress đã khắc phục sự cố API Heartbeat này một phần từ lâu. Ví dụ: bạn có thể giảm tần suất yêu cầu do API Heartbeat tạo ra trên các máy chủ có tài nguyên hạn chế. Nó cũng tự ngừng hoạt động sau một giờ bàn phím / chuột / cảm ứng không hoạt động.

Sử dụng Plugin kiểm soát nhịp tim để giảm yêu cầu Ajax

Bạn có thể khắc phục sự cố này một cách dễ dàng bằng cách sử dụng plugin Kiểm soát nhịp tim của WP Rocket. Nó cho phép bạn vô hiệu hóa hoặc sửa đổi tần suất của API Heartbeat chỉ trong vài cú nhấp chuột.

The Heartbeat Control plugin
Plugin Kiểm soát nhịp tim

Với plugin Heartbeat Control được cài đặt và kích hoạt, bạn có thể quản lý tần suất của API Heartbeat trên trang tổng quan WordPress, giao diện người dùng của trang web và trình chỉnh sửa bài đăng.

Heartbeat Control plugin’s ‘General settings’ dashboard
Bảng điều khiển ‘Cài đặt chung’ của plugin Kiểm soát nhịp tim

Nếu máy chủ của bạn có tài nguyên CPU hạn chế, tôi khuyên bạn nên Tắt Heartbeat trên cả Bảng điều khiển WordPress và Giao diện người dùng. Bạn cũng có thể Sửa đổi tần số Nhịp tim cho tùy chọn ‘Trình chỉnh sửa bài đăng’ và tăng nó lên 30 giây (hoặc thậm chí 60 giây). Tần suất càng cao thì tiết kiệm tài nguyên máy chủ sử dụng càng lớn.

Các cài đặt chính xác bạn sẽ phải sử dụng sẽ khác nhau giữa các trang web. Nếu bạn không chắc chắn về những gì cần sử dụng, bạn có thể tham khảo ý kiến nhà phát triển web của mình.

Lưu lượng truy cập cao do Tấn công DDoS hoặc Spam Bots

Áp đảo trang web của bạn bằng cuộc tấn công DDoS hoặc chương trình thư rác cũng có thể dẫn đến việc sử dụng admin-ajax.php . Tuy nhiên, một cuộc tấn công như vậy không nhất thiết nhắm vào các yêu cầu Admin Ajax ngày càng tăng. Nó chỉ là thiệt hại tài sản thế chấp.

Nếu trang web của bạn đang bị tấn công DDoS, thì ưu tiên của bạn là làm cho nó đứng sau một CDN / WAF mạnh mẽ như Cloudflare hoặc Sucuri. Mọi gói dịch vụ lưu trữ với Kinsta cũng bao gồm Kinsta CDN, có thể giúp bạn giảm tải các tài nguyên trên trang web của mình ở một mức độ lớn.

Để tìm hiểu thêm về cách bạn có thể bảo vệ trang web của mình khỏi các cuộc tấn công nguy hiểm như thế này, bạn có thể tham khảo hướng dẫn chuyên sâu của chúng tôi về cách ngăn chặn một cuộc tấn công DDoS.

Bản tóm tắt

WordPress sử dụng Ajax trong API Heartbeat để triển khai nhiều tính năng cốt lõi của nó. Tuy nhiên, nó có thể dẫn đến tăng thời gian tải nếu không được sử dụng đúng cách. Điều này thường xảy ra do tần suất yêu cầu cao đối với tệp admin-ajax.php .

Trong bài viết này, bạn đã tìm hiểu các nguyên nhân khác nhau khiến việc sử dụng admin-ajax.php , cách chẩn đoán nguyên nhân gây ra triệu chứng này và cách bạn có thể khắc phục nó. Trong hầu hết các trường hợp, việc làm theo hướng dẫn này sẽ giúp trang web của bạn được sao lưu và chạy trơn tru ngay lập tức.

Tuy nhiên, trong một số trường hợp, nâng cấp lên máy chủ có tài nguyên cao hơn là giải pháp khả thi duy nhất. Đặc biệt là đối với các trường hợp sử dụng đòi hỏi khắt khe như trang web thương mại điện tử và thành viên. Nếu bạn đang chạy một trang web như vậy, hãy xem xét nâng cấp lên máy chủ lưu trữ WordPress được quản lý, người có kinh nghiệm xử lý các loại vấn đề hiệu suất này.

Nếu bạn vẫn đang gặp khó khăn với việc sử dụng admin-ajax.php cao trên trang web WordPress của mình, hãy cho chúng tôi biết trong phần nhận xét.


Tiết kiệm thời gian, chi phí và tối đa hóa hiệu suất trang web với:

  • Trợ giúp tức thì từ các chuyên gia lưu trữ WordPress, 24/7.
  • Tích hợp Cloudflare Enterprise.
  • Tiếp cận khán giả toàn cầu với 34 trung tâm dữ liệu trên toàn thế giới.
  • Tối ưu hóa với Giám sát Hiệu suất Ứng dụng được tích hợp sẵn của chúng tôi.

Tất cả những điều đó và hơn thế nữa, trong một kế hoạch không có hợp đồng dài hạn, hỗ trợ di chuyển và đảm bảo hoàn tiền trong 30 ngày. Kiểm tra các kế hoạch của chúng tôi hoặc nói chuyện với bộ phận bán hàng để tìm ra kế hoạch phù hợp với bạn.