Chào mọi người, hôm nay tôi xin chia sẻ một chút kinh nghiệm thực tế của mình về việc so sánh giữa Ajax và Utrecht. Nghe có vẻ hơi lạ phải không? Thực ra, đây là cách tôi gọi vui hai cách tiếp cận khác nhau khi xử lý dữ liệu phía client thôi.
Bắt đầu từ đâu nhỉ?
Chuyện là thế này, đợt vừa rồi tôi có làm một dự án nhỏ, yêu cầu hiển thị dữ liệu từ server lên giao diện web. Ban đầu, tôi nghĩ ngay đến việc sử dụng Ajax. Kiểu truyền thống mà, cứ gọi API rồi nhận dữ liệu về, sau đó dùng JavaScript để render ra HTML. Mọi thứ có vẻ ổn cho đến khi… lượng dữ liệu trả về quá lớn.
Đúng vậy, cái bảng dữ liệu của tôi nó dài dằng dặc, cuộn mỏi cả tay. Chưa kể, mỗi lần filter hay tìm kiếm, lại phải gọi API một lần, rồi lại render lại cả cái bảng. Cảm giác nó cứ ì ạch, chậm chạp thế nào ấy.
Thử nghiệm “Utrecht”
Thế là tôi bắt đầu nghĩ đến một giải pháp khác. Tôi gọi nó là “Utrecht” (thực ra là tự đặt tên thôi, các bạn đừng search Google làm gì), ý tưởng là như sau:
- Tải toàn bộ dữ liệu về một lần duy nhất khi trang web vừa load.
- Lưu trữ dữ liệu đó trong một biến JavaScript.
- Khi cần filter, tìm kiếm, hay làm bất cứ thao tác gì, chỉ cần xử lý trên biến JavaScript đó thôi, không cần gọi API nữa.
- Render dữ liệu từ biến JavaScript ra HTML.
Nghe có vẻ “ngu ngốc” khi tải cả đống dữ liệu về, nhưng thực tế lại khác. Vì không phải gọi API liên tục, nên việc filter, tìm kiếm diễn ra cực kỳ nhanh. Cảm giác mượt mà hơn hẳn. Tất nhiên, cách này chỉ phù hợp với những trường hợp dữ liệu không quá lớn, và không thay đổi quá thường xuyên thôi nhé.
Kết quả ra sao?
Tôi đã thử nghiệm cả hai cách trên cùng một dự án. Kết quả là:
- Với Ajax, trang web load nhanh hơn một chút (vì chỉ tải dữ liệu cho lần hiển thị đầu tiên), nhưng các thao tác sau đó lại chậm hơn.
- Với “Utrecht“, trang web load chậm hơn một chút (vì phải tải toàn bộ dữ liệu), nhưng các thao tác sau đó lại nhanh hơn đáng kể.
Cuối cùng, tôi quyết định chọn “Utrecht” cho dự án của mình. Vì đối với người dùng, trải nghiệm mượt mà khi thao tác quan trọng hơn là việc trang web load nhanh hơn vài giây.
Đó là một chút kinh nghiệm thực tế của tôi. Hy vọng nó sẽ giúp ích cho các bạn trong việc lựa chọn giải pháp phù hợp cho dự án của mình. Đừng ngại thử nghiệm những cách mới, biết đâu bạn sẽ tìm ra được một giải pháp tối ưu hơn thì sao?