Cách giảm thời gian load của admin ajax wordpress

Hiệu năng website, thường chúng ta luôn chú ý đến page load time (thời gian tải trang). Trong WordPress, một tình huống gây ra sự cố tăng thời gian tải trang có thể là do file admin-ajax.php.

Tuy nhiên, mọi công việc thực thi AJAX đều xử lý qua tập tin admin-ajax.php trong thư mục wp-admin của WordPress. Điều này ít nhiều sẽ làm giảm đi tốc độ xử lý AJAX. Trong bài viết này cách xử lý các plugin bị xung đột gây ra bởi file admin-ajax.php, cũng như hướng dẫn giảm số lượng request files và request callback.

Cách giảm thời gian load Admin Ajax

Mã hóa ứng dụng dưới dạng một tệp php duy nhất nằm trong thư mục chủ đề dưới dạng ‘ Mẫu trang chuyên biệt ‘.

Lý do chính cho việc này là để sử dụng các tính năng Vai trò, khả năng & Xác thực đã có sẵn trong WordPress. Đây sẽ là một ứng dụng web tương đối lớn bao gồm các đối tượng bespoke, các lớp và 1000 dòng mã bespoke php, JQuery và TSQL. Một phần của ứng dụng web này sẽ là phần cuối lớn của các hàm ajax (khoảng 120)

File admin-ajax.php là gì trong WordPress (Cách giảm thời gian load ajax)

WordPress version 3.6 được phát hành bên cạnh Heartbeat API trong bộ mã nguồn. WordPress Heartbeat API là giao thức liên lạc giữa trình duyệt và server. Giao thức này sử dụng admin-ajax.php để gửi yêu cầu tới server và kích hoạt event (callbacks) khi nhận dữ liệu. Tính năng chính của Heartbeat API là:

  • Tự động sao lưu:Khi bạn viết nội dung lên cho WordPress, lưu lại bản nháp và tiếp tục cập nhật bản nháp này, WordPress sẽ tự động lưu lại những thay đổi thêm của file.
  • Khóa bài viết và thông báo đăng nhập: Trong website WordPress, bạn sẽ thấy popup hiện lên mỗi khi bạn muốn viết/chỉnh sửa bài viết trong khi người khác đang thao tác trên đó. Bạn cũng nhận được thông báo khi phiên làm việc kết thúc, và bạn cần đăng nhập lại để tiếp tục viết bài.

Cách kiểm tra tốc độ, thời gian load của admin ajax để tối ưu trong wordpress

Vào trang GTmetrix và nhập website của bạn sẽ hiển thị tổng

Sau khi hoàn tất, bạn sẽ thấy bản báo cáo tình trạng website như là điểm hiệu năng và thông tin trang. Vào tab Waterfall sẽ hiển thị tất cả các yếu tố trên đó.

 

Mặc dù các files có vẻ không có vấn đề gì, nhưng bạn sẽ thấy POST admin-ajax.php có thời gian tải lâu hơn các file khác.

Nhấn vào POST admin-ajax.php, bạn sẽ thấy có 4 tab khác nhau: Headers, Parameters, Post, và Response. Khi chẩn đoán vấn đề, tab Post và Response là nơi bạn cần quan sát kỹ

Đối với site này, chúng ta thấy trong Post tab, có vấn đề gì đó với script “count_hit”

Thông tin này cho ta biết được là một bài post nhất định đã chạm plugin counter mà chúng tôi cài đặt trước.

Chúng ta đã nghi ngờ đúng. Bằng việc vô hiệu hóa plugin đó, chúng ta đả giảm thời gian tải trang xuống còn 2 giây. Đây cũng là một cách để tối ưu nhanh chóng nhất.

Tăng tốc backend của website WordPress

Đôi khi, WordPress Heartbeat API kích hoạt trên backend của site cũng có thể là nguyên nhân gây lỗi. Như đã lưu ý ở trên, tính năng này giúp bạn tự động lưu lại công việc – để tránh mất đi thông tin vừa nhập khi có lỗi xảy ra.

Ví dụ, tính năng này sẽ được kích hoạt mỗi lần bạn viết bài mớ và vẫn để tab mở. Nó có thể tăng mức độ sử dụng CPU, như bạn thấy thông tin callback trong developer console bên dưới.

Để giải quyết vấn đề này, bạn cần làm 2 việc, vô hiệu heartbeat API hoặc tạo trigger kiểm tra dài hơn. Vì lựa chọn đầu tiên không phải tốt nhất, nên chúng tôi sẽ hướng dẫn bạn cách thứ 2. Để thay đổi khoảng nghỉ (interval), bạn sẽ cần cài plugin gọi là Heartbeat Control. Vào Dashboard -> Plugins -> Add New. Tìm plugin theo tên nhấn nút install và activate nó.

Settings -> Heartbeat Control Settings. Tại đây, bạn có thể đặt các quy tắc khác nhau cho nhiều điểm khác nhau.

Vì chúng ta muốn giảm thiểu khoảng thời gian giữa từng lần callbacks trong post editor, bạn có thể thiết lập số lượng frequency cao hơn 15. Trong trường hợp này đặt nó là 200.

 

Phát hiện các Plugin sử dụng API Heartbeat

Bây giờ bạn đã thiết lập mọi thứ, đã đến lúc kiểm tra plugin nào tận dụng tệp admin-ajax.php và làm chậm trang web.

Tới GTmetrix , nhập URL website. Sẽ mất một vài phút để phân tích website. Sau khi xong, hãy điều hướng đến tab Waterfall và bạn sẽ thấy một tệp đang mất bao nhiêu thời gian để kết nối và phản hồi. Cuộn xuống một chút và xem có mục nào cho POST admin-ajax.php không. Nếu có, mở rộng nó và điều hướng đến tab Post. Từ đây, bạn sẽ xác định được plugin thủ phạm. Trong trường hợp của tôi, plugin chuyển đổi máy tính để bàn thành công thức hè, sử dụng tập tin admin-ajax.php và liên tục gửi yêu cầu đến máy chủ. Đây là thời gian để đưa ra quyết định, hoặc thay thế nó bằng một plugin khác hoặc bắt chéo ngón tay của bạn.

 

Xem các bài liên quan: