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