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

Chào bạn, 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.

Nhưng trong cái khó thì cũng ló ra nhiều giải pháp. Về xử lý email bất động bộ như ở trên chúng ta có thể cài một plugin SMTP Mailing Queue. Plugin này sẽ giúp chuyển các hành động gửi email vào trong hàng đợi và gửi đi sau. Thế nên các thao tác liên quan tới gửi email sẽ nhanh hơn rất nhiều, vì thao tác email sẽ tốn khoảng vài giây 🙂

Giải quyết xong được cái email. Bước tiếp là về tối ưu code cho các cái tương tự như email nhưng không có plugin

Xử lý bất đồng bộ trong Php và WordPress

Phần này là về kĩ thuật code, bạn có thể nghe để hiểu nhé. Và triển khai thì cũng khá đơn giản vì đã có thư viện.

Minh gặp tình huống tương tự gửi email và gửi Telegram nè, gọi api Airtable và blalala… mình đều có thể giảm thời gian thao tác của khách hàng tối đa dựa vào cách thức mình sẽ chia sẻ đây. Đó là xử lý bất đồng bộ trong Php và WordPress

Xử lý bất đồng bộ cho phép các bước được thực hiện song song, không phải chờ đợi nhau. Ví dụ khi bạn nấu cơm, thì bạn tranh thủ đi lặt rau nấu canh. Bất đồng bộ là trong khi cơm đang được nấu lên đang bốc khói thì rau đang rửa. Còn đồng bộ thì phải chờ nồi cơm chín xong mới đi lặt được rau nên chờ có cơm ăn sẽ đói meo râu.

Về khoảng này PHP rất kém, còn JS hay Node thì rất là mạnh. Thôi vào vấn đề triển khai nha.

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

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.

$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.

$async_telegram = new Telegram_Send_Async_Request(); // lắng nghe ajax và xử lý task

Ok chạy được. Mừng quá.

Vậy là đã xong. Với thao tác học viên nộp bài tập thì sẽ phải xử lý đồng bộ Airtable, xử lý gửi tin nhắn telegram, gửi email thông báo. Giờ các thao tác này đã chạy ngầm được rồi. Nên rất là lẹ, từ lúc trước phải hơn 10 giây để xong thao tác, giờ người dùng chỉ cần 1 giây để thấy kết quả.

Bài viết tới đây xin được dừng. Chúc bạn có thêm giải pháp cho dự án hiện tại và sắp tới của bạn nhé!

Đặng Ngọc Bình
Đặng Ngọc Bình

Một lập trình viên ôm full stack, một freelancer, một người thích chia sẻ về kỹ thuật lập trình từ MeCode

Bài viết: 14
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
1 Comment
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận
Siêng Phạm
Siêng Phạm
6 tháng trước

Cảm ơn Bình
Những bài chia sẻ rất giá trị. Nhờ Bình mà mình biết đến giải pháp payos và đã cài rất ok đó

1
0
Rất thích suy nghĩ của bạn, hãy bình luận.x