Hình ảnh đóng vai trò rất quan trọng đối với mọi website vì nó có mặt hầu hết ở mọi nơi từ logo, banner cho đến product image… Hình ảnh chất lượng giúp thu hút người dùng và đem lại cho họ trải nghiệm tốt nhất ở website. Nhưng số lượng hình ảnh nhiều sẽ đi kèm với dung lượng lớn từ đó ảnh hưởng đến việc load trang, điều đó có thể làm người dùng khó chịu vì thời gian load quá lâu. Nhưng bạn cũng không thể loại bỏ hình ảnh đi được. Lúc đó, chúng ta cần sử dụng đến kỹ thuật
Lazy Loading. Vậy Lazy Loading là gì? Hãy cùng
chúng tôi tìm hiểu thông qua bài viết dưới đây.
Lazy Loading là gì?
Lazy Loading (Lười tải) cũng chính là bản chất của thuật ngữ này. Lazy Loading là một “động tác” của các trình duyệt khi được khởi lệnh. Khi trên trang có nhiều dữ liệu cần phải tải, nếu cần phải tải toàn bộ thì tốc độ tải trang sẽ chậm làm ảnh hưởng đến lượng truy cập và chất lượng trang. Đa phần các users khi truy cập vào một trang web sẽ không lướt thẳng xuống cuối trang nên việc tải toàn bộ dữ liệu và “chờ” các users sẽ tốn nguyên liệu của trang web.
Vậy nên, khi áp dụng Lazy Loading cho trang web, các dữ liệu sẽ thực hiện “tải chậm” và khi users kéo đến phần dữ liệu đó, các dữ liệu sẽ được tải ngay. Nói nôm na, Lazy Loading chính là khi cần mới xuất hiện. Các dữ liệu sẽ xuất hiện khi lướt đến để tránh làm chậm tốc độ tải trang.
Ưu điểm của Lazy Loading
Điểm cộng lớn của Lazy Loading là sự ảnh hưởng đến hiệu suất trang web. Bởi chức năng chỉ tải những dữ liệu cần thiết và trong tầm nhìn của users, Lazy Loading không ngoa khi trở thành kỹ thuật tối ưu hiệu suất trang web hiệu quả nhất hiện nay, nó giúp hạn chế sự chậm trễ xảy ra khi tải đồng loạt dữ liệu trên trang, nhưng chỉ khi biết rõ cách thực hiện nó.
Xem thêm:
Tại sao nên sử dụng Lazy Loading?
Nâng cao website performance
Khi tất cả dữ liệu đều phải tải một loạt nếu có lượng truy cập vào trang sẽ mất khá nhiều thời gian để trình duyệt thực hiện, tệ hơn sẽ bị lag trang và phải đợi trình duyệt tải lại tất cả từ đầu.
Bên cạnh đó, khi trình duyệt phải thực hiện việc “quá tải” sẽ dẫn đến việc bị lỗi, không tải được một số dữ liệu, khiến web bị ẩn dữ liệu.
Điều này để lại ấn tượng xấu về mặt hình thức lẫn khiến users thấy được sự kém thu hút của trang web. Đồng thời làm giảm lượng truy cập và tương tác với trang. Lazy Loading với chức năng chỉ tải dữ liệu khi users lướt đến sẽ trả kết quả cho users nhanh hơn, cũng như cải thiện sự “chuyên nghiệp” của trang web, giúp trang web “bảo toàn” tất cả dữ liệu.
Tiết kiệm tài nguyên
Áp dụng Lazy Loading để “trì trệ” các dữ liệu chưa cần sẽ tiết kiệm bộ nhớ, CPU, GPU,.. và hoàn toàn có ích với những users sử dụng trình duyệt trên thiết bị di động có kết nối chậm.
Cải thiện trải nghiệm người dùng
Trải nghiệm người dùng (UX – User Experience) có nhiều tiêu chí để xác định một trang web có đáp ứng được các trải nghiệm người dùng hay không.
Một trong những tiêu chí được nhiều người quan tâm chính là Tốc độ load trang. Khi các trang web phải tải quá nhiều dữ liệu chưa cần thiết sẽ làm chậm tốc độ tải trang web và các dữ liệu có trên trang.
Bên cạnh đó, số lượng người dùng truy cập internet bằng thiết bị di động ngày càng nhiều (Theo thống kê VPN Mentor, năm 2021 số lượng truy cập web đến từ thiết bị di động toàn cầu là 48,2%), vậy nên Tối ưu trên thiết bị di động cũng là một tiêu chí cần được chú ý.
Lazy loading cải thiện tốc độ tải trang, giảm thiểu lỗi bị ẩn dữ liệu sẽ cải thiện trải nghiệm người dùng hiệu quả.
Gia tăng điểm số đánh giá website
Các users truy cập cũng như Google đều ưu tiên các trang web tải nhanh hơn những trang web chậm, bởi các trang web tải nhanh đưa lại kết quả tìm kiếm nhanh hơn, đạt được nhiều lượt truy cập hơn.
Nếu bạn là người quan tâm đến “điểm số”, Lazy Loading là kỹ thuật hoàn hảo để bạn tận dụng cho các dữ liệu trên trang web.
Lazy Loading giúp trang web của bạn tải nhanh hơn bởi không tốn thời gian để đồng bộ tất cả dữ liệu, từ đó sẽ tăng điểm số
đánh giá trang web của bạn dựa trên các thang đo tốc độ tải trang.
Các kỹ thuật sử dụng Lazy Loading
Lazy Loading chỉ thực sự có tác dụng khi bạn sử dụng nó vào đúng mục đích, đúng thời điểm và đúng đối tượng. Bạn cần phải cẩn thận với Lazy-Load vì nó cũng có nhược điểm:
- Có thể gây nhấp nháy với các nội dung chưa được tải.
- Quá trình thực hiện lazy-load đơn thuần là sự đòi hỏi nhiều Javascript hơn, phức tạp hơn, dễ xảy ra lỗi hơn. Khi các Javascript không được tải xuống do lỗi kết nối mạng hoặc các Javascript không thực hiện được, các dữ liệu được khởi lệnh lazy-load sẽ không xuất hiện.
Trường hợp nên dùng Lazy Loading
Khi trang web có quá nhiều dữ liệu cần tải (có thể là hình ảnh, các chuỗi kí tự đặc biệt, các lệnh thực thi giao diện trang web,…) làm chậm tốc độ tải trang và giảm hiệu suất trang web.
Trang web cần tối ưu trên thiết bị di động và cải thiện tốc độ tải trang. Người dùng mục tiêu (các users) của trang web có các thiết bị kết nối với băng thông rộng, tốc độ kết nối mạnh để không gặp lỗi với Javascript của Lazy-load.
Nếu trang web có những dữ liệu phục vụ cho việc buôn bán (các trang web tương tự các trang thương mại điện tử) thì việc áp dụng Lazy-load không hợp lý, vì khách hàng có thể sẽ không tìm ra những sản phẩm bị “ẩn” mà họ cần.
Chuẩn bị để dùng Lazy Loading
Trước khi sử dụng bất kì một kỹ thuật nào, điều đầu tiên bạn cần làm là hiểu rõ về nó và tính năng nó đem lại cho trang web của mình. Tương tự, với Lazy Loading cũng vậy.
Lazy Loading chỉ là một thuộc tính để “điều khiển” sự xuất hiện của các dữ liệu trên trang web (ở đây thường là hình ảnh). Bạn có thể sử dụng Lazy-load với thuộc tính Loading.
Thuộc tính Loading gồm ba giá trị tương ứng với chức năng của chúng: lazy, eager, auto.
- Lazy – lazy-loading (lười tải): trình duyệt cần lazy-load dữ liệu này.
- Eager – eager (tha thiết, háo hức): giá trị này “yêu cầu” trình duyệt phải tải dữ liệu này ngay lập tức hoặc càng sớm càng tốt. Nếu dữ liệu đang được load với cơ chế lazy được đổi sang eager thì nó sẽ lập tức được tải ngay.
- Auto – auto (tự động): trình duyệt sẽ quyết định việc có nên lazy-load dữ liệu hay không.
Các cách áp dụng Lazy Loading cho dữ liệu (hình ảnh).
Dùng thuộc tính Loading
Cách áp dụng này khá đơn giản, bạn không cần dùng Javascript và lo sợ rằng sẽ có lỗi xảy ra với các hình ảnh trên trang. Tất cả điều bạn cần làm ở đây là báo hiệu cho trình duyệt những hình ảnh nào cần lazy-load bằng thuộc tính Loading và ba giá trị tương ứng lazy, eager, auto.
Dùng Fallback hoặc Polyfill
Đối với các browser không hỗ trợ Loading, cách để chúng ta triển khai lazy-load là dùng Fallback (ở đây có nghĩa dự phòng) và Polyfill (một mã triển khai tính năng nào đó mà trình duyệt web (web browser) không hỗ trợ.)
Tương tự, với Fallback hay Polyfill, chúng ta cũng viết code với thuộc tính Loading để thực thi việc lazy-load các hình ảnh.
Dùng Intersection Observer API
- Intersection Observer API: cho phép bạn giám sát và thực hiện một “động tác” nào đó với dữ liệu (hình ảnh) bạn mong muốn khi được users lướt tới.
- Intersection Observer API có hỗ trợ lazy-load các hình ảnh, tuy nhiên nó không hỗ trợ thuộc tính Loading như hai cách trên. Ta chỉ dùng lệnh lazy Image khi muốn lazy-load các hình ảnh trên trang. Bên cạnh đó, Intersection Observer API cũng lazy-load được cả ảnh background bằng lệnh lazy-background.
Xem thêm:
Những lưu ý khi sử dụng Lazy Loading.
Những cách sử dụng vừa nêu trên có những nét đặc thù riêng với từng đặc tính của các trình duyệt web hiện nay. Ví dụ như Intersection Observer API không hỗ trợ cho Internet Explorer và Opera Mini dù nó đều hỗ trợ lazy-load cho tất cả các trình duyệt web khác.
Đối với Internet Explorer, nếu bạn buộc phải sử dụng trình duyệt này để lazy-load các dữ liệu, bạn có thể dùng Polyfill để giả lập Intersection Observer API, sau đó sử dụng như bình thường.
Về Layout shift:
- Khi áp dụng Lazy Loading cho các hình ảnh hay dữ liệu nói chung, khi các dữ liệu được tải cùng lúc lướt với users có thể sẽ khiến trang web bị nhảy thông tin vì trình duyệt không tính toán được kích thước bức ảnh. Dẫn đến các thông tin bị đẩy ra xa và lung tung trên trang web gây mất thẩm mỹ.
- Vậy nên, trước khi dùng Lazy Loading, bạn nên chỉ ra chính xác kích thước bức ảnh sẽ xuất hiện, khi users lướt xuống và bức ảnh sẽ được tải mà không xê dịch thông tin trên trang.
Bên cạnh đó hãy nhớ, đừng lạm dụng Lazy Loading. Nếu trang web của bạn ít hình ảnh (
dưới 5 hình ảnh), đừng áp dụng lazy-load bởi nó không ảnh hưởng quá nhiều đến tốc độ tải trang. Bạn có thể tìm cách optimize các bức ảnh thay vì Lazy Loading. Cẩn thận khi bạn dùng lazy-load bằng Intersection Observer API.
Khi dùng Intersection Observer API để lazy-load hình ảnh, lệnh
scr sẽ trở thành
data-scr và Googlebot không hiểu data-scr là gì. Như vậy Googlebot sẽ cho rằng hình ảnh của bạn là lỗi và không index chúng. Đối với giá trị lazy của thuộc tính Loading, cách này không áp dụng lazy-load cho hình ảnh background. Nên tránh lazy-load các hình ảnh đầu trang để tránh tối thiểu layout shift.
Xem thêm:
Bạn hiểu những gì website bạn còn thiếu nhưng … bạn không phải là chuyên gia quản trị website, bạn không có chuyên môn:
- Thiết kế chuẩn đến từng pixel về kỹ thuật và như ý về mặt thẩm mỹ
- Lập trình các tính năng bạn cần để thu hút người dùng
- Tối ưu tốc độ, bảo mật
- Đáp ứng hoàn hảo các tiêu chí SEO
- …
Mona Media cung cấp gói dịch vụ tối ưu & nâng cấp website theo yêu cầu riêng giúp bạn hoàn thiện website 100% như ý muốn.
Hy vọng thông tin mà chúng tôi mang lại đã giúp cho các bạn hiểu hơn về kỹ thuật
Lazy Loading.