Kể từ WordPress 3.3 trở đi WordPress đã tính hợp một tính năng cực kì mạnh mẽ và khá hay tuy nhiên ăn tài nguyên rất nhiều máy chủ, hôm nay mình sẽ chia sẻ cách tối ưu wp-cron để giảm tải cho webhost của bạn [ giảm được khoảng 10% ] và tăng tốc website của bạn lên đáng kể, và nâng cao được một chút bảo mật.
Đặc biệt cách webhost cấu hình không phải dạng khủng long thì lên làm công việc này càng sớm càng tốt.

WP-cron là hiểu một cách đơn giản là bạn hẹn giờ báo thức trên máy điện thoại hàng ngày,hay hàng giờ để thực hiện một hành động công việc nào đó.
wp-cron thì làm số công việc như bạn hẹn giờ đăng bài, hẹn auto update WordPress, tự động xóa bài viết đã lưu, tạo bản sao lưu backup plugin, auto gửi ảnh đến sever api litespeed, thông báo mail không đồng bộ, kiểm tra phiên bản update .v.v…
Lợi ích của việc sử dụng wp-cron giúp bạn không phải làm thủ công một số công việc, chỉ cần hẹn giờ và wp-cron sẽ giải quyết giúp bạn.
Nhưng wp-cron thực sự chỉ là hàng nhái sao chép chất lượng chưa cao của hệ điều hành linux, nó không được chạy theo giờ thời gian thực mà nó chạy theo truy cập, càng nhiều truy cập thì wp-cron chạy càng nhiều càng kiểm tra nhiều như vậy càng ngốn tài nguyên máy chủ.( vì WordPress là CMS không có đồng hồ như hệ điều hành nó phải mô phỏng như vậy là wp-cron đã thực hiện nhiệm vụ quá tốt của mình)
Không có khách truy cập = WP Cron không chạy
Bạn đã lên lịch gửi báo cáo qua email (thông qua một số plugin) mỗi ngày vào lúc 8 giờ sáng. Nhưng nếu lúc đó không có khách thì sao?
Nhiều khách truy cập hơn = Chạy quá nhiều Cron không cần thiết
Giả sử trang web của bạn nhận được 20 lượt truy cập mỗi giây. Sau đó, WP-Cron kiểm tra các công việc cron 20 lần mỗi giây.
Kiểm tra và chạy các công việc cron liên quan đến việc thực thi PHP. Như bạn biết đó là nguồn tài nguyên đói và sẽ làm cho trang web của bạn chậm lại khi lưu lượng truy cập của bạn tăng lên .
Một cách tiếp cận tốt hơn là sử dụng công việc cron của hệ thống nói trên và vô hiệu hóa WP-Cron.
Website traffic ít thì còn wp-cron vấn đề chưa to táp lắm nhưng nếu website traffic lớn thì wp-cron là bài toán đâu đầu cần phải tối ưu ngay và luôn.
Mình sẽ chia sẻ tất cả các cách tối ưu wp-cron nhưng theo mình tốt nhất thì nên tắt đi và sử dụng chính hệ điều hành để làm cron thì tuyệt vời nhất.

Bạn có thể sử dụng: plugin Advanced Database Cleaner PRO để kiểm tra những công việc của wp-cron, plugin này còn dọn được những wp-cron thừa không sử dụng.
Tuy nhiên rất wp-cron được đặt mặc định là cứ 60 giây lại kiểm tra một lần, nó làm rất tiêu tốn rất nhiều tài nguyên webhost của bạn.
Mục lục
Làm như thế nào để tối ưu wp-cron
1: Là thay đổi thời gian kiểm tra từ 60 giây thay đổi dài hơn
2: Tư tay làm bằng thủ công.
3: Sử dụng dịch vụ bên thứ 3.
4: sử dụng webhost
Kéo dài thời gian kiểm tra của wp-cron
Bạn chỉ cần đưa vào wp-config.php
define( 'WP_CRON_LOCK_TIMEOUT', 360 );
mình để là 360 tức là 360 giây bạn có thể thay đổi theo ý muốn của bạn, thời gian kiểm tra check sẽ dài hơn sẽ giảm ăn tài nguyên máy chủ của bạn.
WP-cron kiểm tra theo từng traffic người dùng để chạy cách này cũng không ngon, mà thôi mình vẫn liệt kê lên đây.
Làm bằng thủ công
Bạn có thể làm bằng phương pháp thủ công thay công việc cho wp-cron.
Cách tắt wp-cron, bạn hãy cho vào wp-config.php
define( 'DISABLE_WP_CRON', true );
bạn chịu khó tự làm những công việc của wp-cron.
Cách này hơi chày cối thôi không sao cũng là một cách.
Sử dụng dịch vụ bên thứ 3
Bước đầu tiên quan và rất quan trọng bạn có sử dụng dịch vụ cron bên thứ 3 hay tận dụng linux websever thì bạn cần phải tắt wp-cron của WordPress trước cái đã
cách tắt thì bạn chỉ cần đưa đoạn code này vào file wp-config.php
define( 'DISABLE_WP_CRON', true );
Sử dụng easycron
https://www.easycron.com/ là một dịch vụ cho phép bạn tạo công việc cron một cách dễ dàng. Các gói miễn phí cho phép bạn tạo công việc cron chạy cứ sau 20 phút . Đó là quá đủ cho hầu hết các trang web.
Sử dụng Cron Trigger – Cloudflare worker
Phương pháp này tôi rất thích, nó giảm tải và tận dụng máy chủ rất là tốt, đặc biệt đây là máy chủ cloudflare có nhiều popup ở khắp nơi và của hãng cloudlfare thì quá nổi tiếng rồi, mình tin tưởng sự ổn định của nó.
Cron Trigger – Cloudflare worker là dịch vụ cron miễn phí và chất lượng cực kì ngon, nó là miễn phí hoàn toàn thì không chính xác lắm, thực sự là nó được miễn phí 100.000 requests mỗi ngày, đây là con số thực sự quá thoái mái để sử dụng rồi.
Bước 1: bạn cần phải vào đăng ký một tài khoản cloudflare.





addEventListener("scheduled", event => { event.waitUntil(handleScheduled(event)) }) async function handleScheduled(event) { await fetch("https://wptangtoc.com/wp-cron.php?doing_wp_cron") }
bạn hãy thay tế wptangtoc.com
bằng chính xác domain tên miền của bạn.




Mặc định thiết lập là 30 phút chạy một lần mình sẽ chỉnh sửa xuống là 10 phút chạy một lần trong ví dụ (bình thường mình thấy 10 phút chạy một lần là cũng đã phù hợp với đa phần tất cả mọi người sử dụng website WordPress rồi) , bạn có thể thay đổi theo chính xác nhu cầu của bạn.
như vậy là hoàn tất rồi thiết lập cron cloudflare rồi nhé.
Sử dụng tại webhost
đây là theo mình là cách tốt nhất và tuyệt vời nhất.
Mình đang sử dụng cách này.
wp-cron bản chất của nó là mô phòng lại cron của linux, sử dụng cách này sẽ hiểu quả hơn rất nhiều.
Đây theo mình là các tốt nhất, để tối ưu hóa wp-cron.
với share hosting thì bạn hãy truy cập vào cpanel:
Bước 1 : hãy chặn wp-cron đi
Cách tắt wp-cron, bạn hãy cho vào wp-config.php
define( 'DISABLE_WP_CRON', true );
Bước 2: Vào Cpanel hay directadmin Tìm đến ứng dụng mang tên cron jobs.
Thiếp lập thời gian chạy hàng phút theo ý muốn của bạn.
Chọn giá trị thời gian của bạn, giao diện của cpanel khá trực quan để làm thì không có gì khó khăn cả.
wget -q -O - https://wptangtoc.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
hãy thay wptangtoc.com bằng tên miền của bạn

Điền giá trị này vào.
Với VPS và máy chủ riêng chạy hệ điều hành linux:
Bước 1 : hãy chặn wp-cron đi
Cách tắt wp-cron, bạn hãy cho vào wp-config.php
define( 'DISABLE_WP_CRON', true );
Bước 2: bạn cần cài đặt ứng dung wget và nano (nếu bạn đã cài trước đó rồi thì bỏ qua bước này)
Cách cài đặt wget trên centos:
yum install wget nano -y
Cách cài đặt trên Ubuntu
apt-get install wget nano -y
Bước 3: Gọi cron job của linux :
export VISUAL=nano; crontab -e
Bước 4:
*/5 * * * * wget -q -O - https://wptangtoc.com/wp-cron.php?doing_wp_cron >/dev/null 2>&1
Đặt số 5 là 5 phút bạn có thể thay thế tuy thuộc vào nhu cầu của bạn, theo mình là để giá trị là 10 phút là hợp lý. hãy thay wptangtoc.com bằng tên miền của bạn. nếu bạn cần cron thực thi ngắn hơn có thể điều chỉnh cho phù hợp.
Giải thích:
wget -q -O – https://wptangtoc.com/wp-cron.php?doing_wp_cron : câu lệnh
>/dev/null 2>&1 : cứ chạy không cần thông báo làm được hay không hay có thông báo lỗi gì thì cứ kệ.
Đặt càng dài thì càng ngốn tài nguyên hơn bạn hãy điều chỉnh phù hợp với nhu cầu của bạn.
Cái bước 4 này mình sẽ hướng dẫn có thêm một kỹ nâng cao giúp thực thi cron tiết kiệm tài nguyên hơn nữa và tối ưu tốc độ hơn.
Tối ưu wp cron tại localhost 127.0.0.1 (phương án này nó sẽ thực thi cron hiệu quả hơn cải thiện tốc độ và quan trọng như anh em bật cdn cloudflare mode chống ddos thì cơ chế cũ nó sẽ bị chặn, nhưng cơ chế mới này vừa cải thiện hiệu suất vừa bảo đảm không bị chặn bởi cloudflare khi có chiến khác các mode chống ddos của cloudflare hoặc những mode bảo mật gì đó)
Đây là phương án mình thích nhất và mình thường sử dụng nhất:
*/5 * * * * wget -q -O - https://127.0.0.1/wp-cron.php?doing_wp_cron --header="Host: wptangtoc.com" --no-check-certificate >/dev/null 2>&1
Bạn gửi yêu cầu thông qua 127.0.0.1 localhost thay vì domain bình thường, so với cách trên nó giúp, bạn tiết kiệm bằng thông mạng hơn và ổn định hơn, khi yêu cầu thông qua 127.0.0.1 localhost như thế này card mạng của bạn không phải làm việc không cần hoạt động nó vẫn thực thi được như vậy sẽ tiết kiệm tài nguyên hơn và hệ thống dns cũng không cần phải phân giải dns, anh em có chiến khai một số mode bảo mật linh tinh cũng không sợ bị chặn…
Lưu ý kỹ thuật này thực thi qua localhost 127.0.0.1 này chỉ được thực hiện khi chính từ con webserver đang được lưu trữ website ở đó thôi nhé.
Đặt số 5 là 5 phút bạn có thể thay thế tuy thuộc vào nhu cầu của bạn, theo mình là để giá trị là 10 phút là hợp lý. hãy thay wptangtoc.com bằng tên miền của bạn.
Bước 3: ấn ctrl + o rồi tiếp tục ấn ctrl + x
là xong.
(hãy lưu ý thì hãy nhớ tải ứng cài đặt ứng dụng nano trước nhé.)
Nếu chưa có cách cài đặt trên Ubuntu
apt-get install nano -y
Cài đặt trên centos
yum install nano -y
bạn cần phải có công cụ wget trước nhé nếu chưa có bạn hãy cài.
Nếu chưa có cách cài đặt trên Ubuntu
apt-get install wget -y
Cài đặt trên centos
yum install wget -y
Tóm tắt.
Như vậy là xong chúng mình đã hoàn tất quá trình tối ưu hóa wp-cron, công việc này có thể giảm tải được 10% cho các webhost đặc biệt là các webhost có cầu hình thấp càng hiệu quả. và cải thiện hiệu suất cho website đặc biết là dashboard WordPress.
Website WordPress thì cũng cần phải làm công việc tối ưu này, Đặc biệt là website có traffic lớn.
Để lại một bình luận