Mục lục
Bạn có bao giờ thắc mắc tại sao website WordPress của mình thỉnh thoảng lại load chậm bất thường, hoặc các bài viết lên lịch đăng lại không xuất hiện đúng giờ? Thủ phạm thường nằm ở WP-Cron.
Trong bài viết này, mình sẽ hướng dẫn bạn cách “thay máu” hệ thống quản lý tác vụ của WordPress bằng cách sử dụng Cloudflare Workers – một giải pháp hiện đại, chuyên nghiệp và hoàn toàn miễn phí.
1. WP-Cron là gì và tại sao nó lại gây phiền toái?
Theo mặc định, WordPress sử dụng một file gọi là wp-cron.php để xử lý các tác vụ tự động như:
Kiểm tra cập nhật theme/plugin.
Đăng bài viết đã lên lịch.
Gửi email thông báo.
Dọn dẹp cache.
Vấn đề là: WP-Cron không phải là một “cron job” thực thụ. Nó chỉ chạy khi có người truy cập vào website của bạn.
Nếu web ít khách: Các tác vụ quan trọng sẽ bị trễ (lỗi “Missed Schedule”).
Nếu web nhiều khách: Mỗi lượt truy cập đều kích hoạt kiểm tra cron, gây lãng phí tài nguyên server và làm chậm tốc độ tải trang.
2. Tại sao nên chọn Cloudflare Workers để chạy Cron?
Thay vì dùng Cron Job của hosting (đôi khi bị giới hạn hoặc khó cấu hình), Cloudflare Workers mang lại những ưu điểm vượt trội:
Không tốn tài nguyên server: Lệnh thực thi chạy trên hạ tầng Edge của Cloudflare.
Độ chính xác tuyệt đối: Chạy đúng từng phút theo lịch trình bạn đặt ra.
Miễn phí: Gói miễn phí của Cloudflare cho phép tới 100.000 yêu cầu mỗi ngày (quá đủ cho một website thông thường).
3. Hướng dẫn chi tiết thiết lập WP-Cron với Cloudflare Workers
Bước 1: Vô hiệu hóa WP-Cron mặc định
Để tránh xung đột, bạn cần tắt cơ chế kích hoạt tự động của WordPress.
Mở file
wp-config.phptrong thư mục gốc của website.Tìm dòng
/* That's all, stop editing! Happy publishing. */.Thêm đoạn code sau vào ngay phía trên:
PHP
define('DISABLE_WP_CRON', true);
Bước 2: Tạo Worker trên Cloudflare
- Đăng nhập vào tài khoản Cloudflare.
- Chọn Workers & Pages > Create application > Create Worker.

- Tiếp theo bạn chọn “Start Hello World!”.

- Bạn đặt tên sao cho dễ nhớ, ví dụ “tenmiencuaban” và nhấn Deploy.

- Tiếp theo bạn nhấn Edit code.

- Bạn xóa hết code trong khung đi và dán code này vào:
addEventListener("scheduled", (event) => { event.waitUntil(handleScheduled(event)); }); async function handleScheduled(event) { const duration = 60000; // 1 phút const interval = 2000; // 2 giây const startTime = performance.now(); while (performance.now() - startTime < duration) { const taskStartTime = performance.now(); await fetch("https://tenmiencuaban.com/wp-cron.php?doing_wp_cron"); const elapsedTime = performance.now() - taskStartTime; const delay = interval - elapsedTime; if (delay > 0) await new Promise((resolve) => setTimeout(resolve, delay)); } }
(Đừng quên thay tenmiencuaban.com thành tên miền của bạn nhé!)
Ở dòng const interval = 2000; // 2 giây, muốn bao nhiêu giây gọi cron 1 lần thì sửa lại, mặc định là 2s
Trong trường hợp bạn muốn 5 giây gửi 1 lần thì sửa lại thành
const interval = 5000; // 5 giâyXong xuôi bạn ấn Deploy để lưu lại.
Bước 3: Cấu hình thời gian chạy (Cron Triggers)
- Bạn quay lại trang Worker vừa tạo, chọn tab Settings, tại mục Trigger Events, nhấn Add.

Chọn Cron Triggers.

- Chọn tab Cron expression sửa lại thành */1 * * * *, sau đó ấn Add.
Vậy là chúng ta sẽ có 1 phút gọi workers 1 lần, workers trong 1 phút sẽ chạy 30 lần, mỗi lần cách nhau 2 giây tới WP-Cron.Kiểm tra sơ bộ thấy mọi thứ đều hoạt động chính xác 
4. Tối ưu bảo mật: Chặn đứng truy cập lạ vào Cron
Bây giờ, khi đã có Cloudflare Workers đảm nhận việc chạy Cron, bạn không muốn bất kỳ ai khác (hoặc bot xấu) truy cập trực tiếp vào file wp-cron.php để phá hoại tài nguyên. Hãy thiết lập một quy tắc tường lửa (WAF) trên Cloudflare:
Truy cập vào Security > WAF > Create rule.
Đặt tên quy tắc:
Bảo vệ WP-Cron.Cấu hình điều kiện (Expression):
Field: URI Path — Operator: contains — Value:
/wp-cron.phpNhấn And
Field: Verified Bot Category — Operator: is not — Value: Cloudflare Crawler
Chọn hành động (Action): Block (hoặc Managed Challenge để thử thách bằng mã captcha).
Lưu ý chuyên gia: Việc này đảm bảo rằng chỉ có “nhân viên” của Cloudflare (Workers) hoặc các trình thu thập dữ liệu hợp lệ mới có thể tương tác với file cron của bạn, giúp website miễn nhiễm với các cuộc tấn công dò tìm hoặc làm treo server thông qua file này.
Kết luận
Chuyển WP-Cron sang Cloudflare Workers là một trong những tinh chỉnh nhỏ nhưng mang lại hiệu quả lớn cho hiệu suất WordPress. Website của bạn sẽ phản hồi nhanh hơn, server “dễ thở” hơn và các tác vụ lên lịch luôn hoạt động chuẩn xác.
Bạn có đang gặp khó khăn trong việc tối ưu tốc độ WordPress không? Hãy để lại bình luận bên dưới, mình sẽ hỗ trợ giải đáp nhé!







