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ề.
heatbeat api rất giá trị hữu ích với những công ty lớn nhưng không giá trị và tận chí là tác hại với những công ty nhỏ.
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 viet global $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.
Bạn có thể xem video bên trên để xem hướng dẫn chi tiết cụ thể nhé.
Xong! Chỉ vài đường quyền thao tác đơn giản vậy thôi nhưng các bạn đã có thể tiết kiệm được kha khá tài nguyên cho webhost rồi đấy.
Điều này đồng nghĩa với việc webhost của bạn sẽ có khả năng chịu tải tốt hơn, cho phép nhiều người online cùng lúc nhiều hơn.
Thật tuyệt vời phải không nào? Chúc các bạn thành công!
Đây là seria bài viết của mình về : tùy chỉnh cấu trúc lõi WordPress
Nguyễn Công Phúc đã bình luận:
Trong WP Tăng Tốc
Litespeed cache có tối ưu được cái này, giữ lại dùng site heart wordpress kiểm tra lỗi hệ thống rất tốt
Gia Tuấn đã bình luận:
Trong WP Tăng Tốc
rất nhiều plugin tăng tốc wordpress họ hỗ trợ tối ưu Heartbeat API, nhưng để debug hệ thống thì mình thích kéo website về localhost xong sử dụng plugin query monitor, xong nên website chính thì tắt toàn bộ debug đi để nâng cao bảo mật.