Chuyển toàn bộ AJAX sang REST API cho hiệu suất tốt hơn

AJAX trong WordPress thường được xử lý qua admin-ajax.php – nhưng đây là một trong những điểm nghẽn hiệu suất lớn. Trong bài viết này, ta sẽ học cách chuyển sang dùng REST API – vừa nhanh hơn, dễ debug hơn, vừa chuẩn hoá cho các dự án hiện đại.

Chuyển toàn bộ AJAX sang REST API cho hiệu suất tốt hơn

Vấn đề với admin-ajax.php

  • Tất cả request AJAX đều phải load toàn bộ WordPress – kể cả với người dùng không cần đăng nhập.
  • Không cache được.
  • Dễ tạo ra DDoS entry point nếu không hạn chế.

Lợi ích khi dùng REST API

  • Dễ tổ chức endpoint theo mô-đun.
  • Dễ test qua Postman hoặc các trình REST client.
  • Cho phép cache theo từng route nếu cần.
  • Tốc độ phản hồi nhanh hơn đáng kể.

Tạo một endpoint đơn giản

add_action('rest_api_init', function () {
  register_rest_route('custom/v1', '/rating/', [
    'methods'  => 'POST',
    'callback' => 'handle_rating_submit',
    'permission_callback' => '__return_true', // Chấp nhận public
  ]);
});

function handle_rating_submit(WP_REST_Request $request) {
  $post_id = $request->get_param('post_id');
  $rating = $request->get_param('rating');

  if (!$post_id || !$rating) {
    return new WP_REST_Response(['error' => 'Thiếu thông tin'], 400);
  }

  // Xử lý logic lưu rating tại đây
  return new WP_REST_Response(['success' => true]);
}

Gửi dữ liệu bằng JavaScript

fetch('/wp-json/custom/v1/rating/', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    post_id: 123,
    rating: 4
  })
})
.then(res => res.json())
.then(data => {
  console.log(data);
});

Tùy chọn bảo mật nâng cao

  • Dùng nonce và xác thực với permission_callback.
  • Thêm giới hạn IP/thời gian xử lý để chống spam.

Khi nào KHÔNG nên dùng REST API?

  • Nếu bạn đang gọi từ chính server backend → nên dùng internal function luôn.
  • Request cần bảo mật cao → nên có xác thực rõ ràng hơn OAuth hoặc JWT.

Kết luận

REST API không chỉ thay thế admin-ajax.php mà còn là một phần quan trọng trong việc hiện đại hoá cách xây dựng các chức năng WordPress. Nếu bạn đang bắt đầu tối ưu theme hoặc hệ thống lớn, hãy chuyển từng phần sang REST API càng sớm càng tốt.

Bình Luận


  • Không có bình luận.