Heartbeat API: tối ưu thay vì tắt bừa trong WordPress

Heartbeat API là một tính năng tích hợp sẵn trong WordPress từ phiên bản 3.6. Nó hoạt động như một kênh giao tiếp AJAX định kỳ giữa trình duyệt và server. Nhiều admin thường nghe khuyên rằng “nên tắt Heartbeat để giảm tải server”. Nhưng sự thật phức tạp hơn: Heartbeat mang lại nhiều lợi ích quan trọng, và giải pháp đúng là tối ưu tần suất chứ không phải tắt hoàn toàn. Bài viết này sẽ phân tích Heartbeat API, vai trò của nó và cách cấu hình tối ưu.

Heartbeat API: tối ưu thay vì tắt bừa trong WordPress

Heartbeat API là gì

Heartbeat API dùng AJAX để gửi request từ trình duyệt về server theo chu kỳ. Mặc định:

  • Dashboard và post editor: mỗi 15 giây.
  • Frontend: mỗi 60 giây (nếu có plugin/theme sử dụng).

Các request này thực hiện qua endpoint /wp-admin/admin-ajax.php hoặc REST API, và có thể tiêu tốn tài nguyên nếu bị spam quá nhiều.

Heartbeat API dùng để làm gì

  • Tự động lưu bản nháp: khi bạn viết bài, WordPress tự động autosave nội dung để tránh mất dữ liệu.
  • Khóa post (post locking): ngăn hai người chỉnh sửa cùng một bài viết, giúp tránh xung đột.
  • Session user: giữ session đăng nhập hoạt động, tránh bị logout sớm khi đang thao tác.
  • Tích hợp plugin: nhiều plugin dựa vào Heartbeat để cập nhật realtime (thống kê, thông báo, chat,…).

Tại sao không nên tắt bừa Heartbeat

  • Tắt Heartbeat đồng nghĩa mất autosave và khóa post → dễ mất dữ liệu hoặc xung đột khi nhiều người cùng làm việc.
  • Một số plugin (SEO, analytics, chat, ecommerce) phụ thuộc Heartbeat, nếu tắt sẽ gây lỗi ẩn hoặc mất tính năng.
  • Tắt hoàn toàn chỉ nên áp dụng cho site rất nhỏ, đơn user, không dùng post editor.

Tối ưu Heartbeat đúng cách

Giải pháp là giảm tần suất request thay vì tắt hoàn toàn. Bạn có thể dùng code sau trong functions.php hoặc mu-plugin:

<?php
add_filter('heartbeat_settings', function($settings) {
    // Giảm tần suất xuống 60 giây ở backend
    $settings['interval'] = 60;
    return $settings;
});

Nếu muốn kiểm soát kỹ hơn theo khu vực:

<?php
add_filter('heartbeat_settings', function($settings, $screen) {
    if ( 'post' === $screen ) {
        // 20 giây khi đang viết bài (để autosave kịp)
        $settings['interval'] = 20;
    } else {
        // 60 giây cho các trang admin khác
        $settings['interval'] = 60;
    }
    return $settings;
}, 10, 2);

Giải pháp nâng cao

  • Monitor: dùng tool server (htop, access log) để xem request Heartbeat có chiếm nhiều không.
  • Kết hợp cache: Heartbeat chạy qua admin-ajax, không được cache. Đảm bảo server có PHP-FPM, OPcache, Redis để giảm chi phí.
  • Plugin quản lý: một số plugin như Heartbeat Control cho phép chỉnh tần suất dễ dàng, thay vì code tay.

Khi nào nên tắt hẳn Heartbeat

  • Site tĩnh, ít hoặc không có user đăng nhập.
  • Không ai sử dụng post editor của WordPress (ví dụ chỉ import dữ liệu hoặc dùng headless CMS).
  • Server cực kỳ yếu và không chịu nổi request admin-ajax.

Kết luận

Heartbeat API không phải “kẻ thù” của hiệu năng WordPress. Nó mang lại nhiều tính năng thiết yếu như autosave, post locking và giữ session hoạt động. Thay vì tắt bừa, hãy tối ưu tần suất request để vừa giảm tải server, vừa giữ lại lợi ích mà Heartbeat mang lại. Đây là cách cân bằng giữa hiệu năng và trải nghiệm người dùng trong WordPress.

Bình luận


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

Init Toolbox

Nhấn Ctrl + \ trên máy tính, hoặc vuốt sang trái ở bất kỳ đâu trên mobile.

Đăng nhập





Đang tải...