Tăng Tốc WordPress Với 2 Thủ Thuật Này Trải Nghiệm Người Dùng Sẽ Thật Tuyệt Vời
khi đặt hàng Woocommerce bạn sẽ thấy quay hơi lâu hoặc khá lâu đây là một trường hợp, bài viết này sẽ giúp bạn tăng tốc cho những thao tác này cực kỳ nhanh luôn
Bài này viết thiên về kỹ thuật và code một chút xíu nhưng nếu bạn là người dùng bình thường thì cũng dùng được 50% đấy.
Lý do thao tác WordPress bị chậm là đây
Ở đây mình muốn nói một số thao tác xử lý trên WordPress ví dụ như khi đặt hàng. Khi đặt thì bạn phải chờ tiến trình gửi email xong mới chuyển qua trang cám ơn. Vậy ở đây tại sao không giải quyết vấn đề gửi email riêng ra (bất đồng bộ) đó là điểm yếu của Php và WordPress.
Xử lý bất đồng bộ với WP Background Processing
Đây là một thủ thuật đã được viết thành một thư viện tên là wp background processing (Cám ơn tác giả A5hleyRich đã chia sẻ)
Bạn viết code xử lý bất đồng bộ ra một Class kế thừa từ WP_Async_Request. Nếu bạn muốn làm theo kiểu hàng đợt để xử lý nhiều dữ liệu thì kế thừa WP_Background_Process
|
1
2
3
4
5
6
7
8
9
10
11
|
class Telegram_Send_Async_Request extends WP_Async_Request { protected $action = 'telegram_send'; protected function handle() { // xử lý gửi tin nhắn ở đây bao lâu tùy thích // sẽ không ảnh hưởng tới trải nghiệm load của người dùng }} |
Sau khi khai báo. Khi nào cần thực hiện thì hãy gọi.
|
1
2
3
|
$async_telegram = new Telegram_Send_Async_Request();// gọi dispatch để xử lý gửi tin nhắn mà không làm request bị đơ$async_telegram->data( array( 'thamso' => $name ) )->dispatch(); |
Nhưng đời không như là mơ, đời muốn ta luôn vấp ngã để học những bài học. Làm đủ kiểu chả hiểu sao nó không chạy được. Không lẻ hàng dõm sao???
Không được mình phải vào đọc coi người ta làm cái gì trong cái thư viện này. Thì mới biết được một điều rất lạ đó là nó đơn giản lắm.
Do nó dùng Ajax để gửi thêm một cái lệch request khác chạy xử lý gửi Telegram. Request Ajax này dùng wp_remote_post với tham số blocking = false. Nên không phải chờ request này. Ngẫm lại mới thấy ủa chổ nào để cái lắng nghe Ajax mà nó xử lý.
À vậy thì mình phải gọi cái này ở một nơi nào đó để nó đăng ký cái lắng nghe request ajax.
|
1
|
$async_telegram = new Telegram_Send_Async_Request(); // lắng nghe ajax và xử lý t |
