Kể từ phiên bản WordPress 3.6 trở đi, WordPress đã giới thiệu thêm tính năng là WordPress Heartbeat API.
Nó cho phép trình duyệt web giao tiếp với máy chủ khi bạn đăng nhập vào bảng quản trị WordPress.
Chức năng này giúp WordPress xử lý những thứ như hiển thị thông báo cho các tác giả khác rằng bài viết đang được ai đó chỉnh sửa theo theo thời gian thực. Các plugin cũng có thể tận dụng tính năng Heartbeat để hiển thị thông báo theo thời gian thực.
Hiểu ngắn gọn giống như bạn chơi facebook nó ai bình luận vào bài viết của bạn, nó sẽ hiển thị thông báo cho bạn ngay mà bạn không cần phải reset lại ứng dụng mới nhận được thông báo đó.
Facebook là mạng xã hội và máy chủ của họ trâu bò lắm còn mình chỉ là website WordPress nhu cầu cơ bản thì đôi khi tính năng này lại là tác hại cho máy chủ của bạn đặc biệt là bạn đang sử dụng share hosting.
WordPress Heartbeat API sử dụng /wp-admin/admin-ajax.php để chạy các lệnh gọi AJAX từ trình duyệt web.
Mặc dù điều này là tuyệt vời và tất cả những gì nó cũng có thể gây ra mức sử dụng CPU cao và lượng lệnh gọi PHP rất nhiều ( ăn tài nguyên máy chủ khá nhiều).
Ví dụ: nếu bạn để trang tổng quan của mình mở, nó sẽ tiếp tục gửi các yêu cầu ĐĂNG đến tệp này theo định kỳ, cứ sau 15 giây theo mặc định của WordPress.
ĐÂY là tính năng rất giá trị cho những công ty lớn mà có nhiều nhân viên làm nội dung content để dễ dàng tương tác và quản lý trong công việc nhưng với công ty nhỏ hay blogger hay chỉ có một quản trị viên kiểm đủ thứ từ a đến z thì bạn cần phải loại bỏ nó hoặc tối ưu nó, để giảm tải máy chủ và tăng tốc backend WordPress.
Tính năng heatbeat api này với những máy chủ khỏe những công ty lớn thì không hề xi nhê gì, nhưng với công ty nhỏ những blogger chỉ có webhost cấu hình không nhiều cpu và nhiều ram lắm thì đây là thứ rất là nặng nề.
Tối ưu API Heartbeat
Bạn có thể tối ưu api Heartbeat theo phương pháp của mình nhé.
Nếu trong trường hợp website của bạn chỉ một tài khoản, bạn kiêm đủ thứ từ viết bài, các thứ các thứ thì xóa toàn bộ API Heartbeat cũng được vì chỉ mình bạn, bạn làm bạn hiểu
Tuy nhiên đặt vào tính huống nâng cao hơn tôi sẽ tắt toàn bộ API Heartbeat trừ post, vì bài viết khu vực bài viết này thường xuyên nhân sự của bạn vào đây viết bài tạo nội dung gì đó bạn có thể dễ dàng nhận biết ồ người này đang viết cái này người kia đang làm cái kia, công việc sẽ trở lên thuật tiện hơn rất nhiều…
Tôi sẽ hướng dẫn chia sẻ ưu tiên cách dạng nâng cao hơn đó là cách tắt toàn bộ API Heartbeat trừ khu vực bài viết post, nếu muốn tắt cả API Heartbeat thì mình cũng có hướng dẫn luôn.
add_action(‘init’, ‘wptangtoc_disable_heartbeat’, 1);function wptangtoc_disable_heartbeat() {if(is_admin()) {global $pagenow;if(!empty($pagenow) && in_array($pagenow, array(‘admin.php’))) {if(!empty($_GET[‘page’])) {$exceptions = array(‘gf_edit_forms’,‘gf_entries’,‘gf_settings’);if(in_array($_GET[‘page’], $exceptions)) {return;}}}}//disable hearbeat chi load bai vietglobal $pagenow;if($pagenow != ‘post.php’ && $pagenow != ‘post-new.php’) {wptangtoc_replace_hearbeat();}}function wptangtoc_replace_hearbeat() {wp_deregister_script(‘heartbeat’);//wp_dequeue_script(‘heartbeat’);if(is_admin()) {wp_register_script(‘hearbeat’, get_stylesheet_directory_uri() . ‘/hearbeat.js’);wp_enqueue_script(‘heartbeat’, get_stylesheet_directory_uri() . ‘/hearbeat.js’);}}/* Heartbeat Frequency thay doi thoi gian mac dinh tu 15 giay thanh 120 giay/***********************************************************************/add_filter(‘heartbeat_settings’, ‘wptangtoc_heartbeat_frequency’);function wptangtoc_heartbeat_frequency($settings) {$settings[‘interval’] = 120;return $settings;}
Bước 1: Bạn copy đoạn code này vào file functions.php
Bước 2: Bạn cho vào một tập tin file rỗng không có nội dung gì tên là hearbeat.js cho vào thư mục themes của bạn đang sử dụng (wp-content/themes/them-ban-dang-dung/hearbeat.js)- lưu ý là nhớ nhập chính xác tên nhé file nhé.
Nếu bạn trong trường hợp tắt api hearbeat chỉ trừ post như vậy là xong rồi nhưng trong trường hợp bạn muốn tắt toàn bộ api hearbeat sẽ hữu ích với cả website 1 mình bạn làm mọi thứ đi thì bạn đoạn code mình cho trong bài viết này bạn xóa dòng 22 và xóa dòng 24 đi nhé ( if($pagenow != ‘post.php’ && $pagenow != ‘post-new.php’) { và }
Cách 2: Để công việc trở lên dễ dàng mình đã tạo sẵn một plugin tối ưu heartbeat api WordPress cho bạn, bạn có thể tải và cài đặt cho website WordPress của bạn.