Có một câu hỏi mình nghe đi nghe lại từ khách suốt mấy năm làm web: "Web em sao mở chậm quá, cuộn xuống mới thấy ảnh hiện ra?" — và câu trả lời gần như lúc nào cũng dính tới một thứ tên là lazy loading. Nói ngắn gọn, lazy loading là gì ư? Đó là kỹ thuật trì hoãn việc tải những phần nội dung nặng (chủ yếu là ảnh và video) cho tới khi người dùng thật sự cuộn tới gần nó, thay vì nhồi tải hết mọi thứ ngay từ giây đầu tiên trang vừa mở.
Mình hay ví von cho khách dễ hình dung: lazy loading giống như đi ăn buffet mà không bưng hết cả trăm món ra bàn cùng lúc. Bạn chỉ lấy món nào sắp ăn tới, ăn xong mới đứng dậy lấy món tiếp. Trình duyệt cũng vậy — nó "lười" một cách thông minh, chỉ tải thứ đang nằm trong tầm mắt. Nhờ vậy trang hiện ra nhanh hơn nhiều, đỡ tốn dữ liệu của khách, và máy chủ cũng nhẹ gánh hơn. Trong bài này mình kể hết: nó hoạt động thế nào, lúc nào nên dùng, lúc nào tuyệt đối đừng dùng, và cách bật sao cho không vô tình làm hỏng SEO.
Lazy loading hoạt động ra sao trong thực tế
Hãy tưởng tượng một trang bán hàng có 50 tấm ảnh sản phẩm. Nếu không có lazy loading, trình duyệt sẽ cố tải sạch 50 ảnh ngay khi trang vừa mở — kể cả những ảnh nằm tận cuối trang mà khách có khi chẳng bao giờ cuộn tới. Hậu quả là khách nhìn màn hình trắng hoặc giật cục mất mấy giây đầu, đúng cái khoảnh khắc dễ rời đi nhất.
Với lazy loading, trình duyệt làm khác hẳn. Nó tải ngay những ảnh trong khung nhìn (viewport — vùng màn hình khách đang thấy), còn những ảnh phía dưới thì để dành. Khi khách cuộn xuống, trình duyệt mới âm thầm nạp ảnh tiếp theo trước khi nó kịp lọt vào tầm mắt — nên trải nghiệm vẫn mượt, khách hầu như không nhận ra có gì đang được tải ngầm.
Cách kỹ thuật này nhận biết "khi nào cần tải" thường dựa vào một thứ gọi là Intersection Observer (bộ quan sát giao cắt — công cụ của trình duyệt báo khi một phần tử sắp lọt vào màn hình). May mắn là từ vài năm nay, bạn gần như không cần đụng tới mã lệnh phức tạp đó nữa, vì trình duyệt đã hỗ trợ sẵn ở mức rất đơn giản — mình sẽ nói ở phần dưới.
Điểm cốt lõi cần nhớ: lazy loading không làm web của bạn "nhẹ đi" về dung lượng tổng, mà nó dời thời điểm tải. Tổng số ảnh vẫn vậy, nhưng cái mà khách phải chờ ở giây đầu thì ít hơn nhiều. Và trong cuộc đua tốc độ, vài giây đầu tiên chính là tất cả.

Lazy loading liên quan gì tới tốc độ và SEO
Đây là phần mình muốn khách hiểu nhất, vì nhiều người nghĩ lazy loading chỉ là mẹo kỹ thuật vặt. Thực ra nó dính trực tiếp tới mấy chỉ số mà Google dùng để chấm điểm trải nghiệm trang.
Google có một bộ tiêu chí gọi là Core Web Vitals (các chỉ số sống còn về trải nghiệm web). Một trong số đó là LCP — thời gian để phần tử lớn nhất trong khung nhìn hiện ra. Nếu ảnh banner đầu trang của bạn nặng và bị tải chung với 49 ảnh khác phía dưới, LCP sẽ chậm và điểm trải nghiệm tụt. Lazy loading giúp ưu tiên đúng thứ cần hiện trước, nên gián tiếp cải thiện chỉ số này. Mình có viết riêng một bài giải thích kỹ về Core Web Vitals là gì nếu bạn muốn đào sâu.
Nhưng — và đây là cái bẫy chết người — lazy loading nếu dùng sai chỗ lại làm LCP tệ đi. Cụ thể: nếu bạn lỡ bật lazy cho chính ảnh banner đầu trang (ảnh quan trọng nhất, hiện ngay trên màn hình đầu), trình duyệt sẽ trì hoãn nó một nhịp không cần thiết, khiến khách thấy chỗ trống lâu hơn. Nguyên tắc vàng: ảnh nằm ngay màn hình đầu thì KHÔNG bao giờ lazy, chỉ lazy những ảnh phải cuộn mới thấy.
Về chuyện Google có index (lập chỉ mục — đưa vào kết quả tìm kiếm) được ảnh lazy hay không: ngày xưa đây là nỗi lo lớn, vì bot có thể không "cuộn" để kích hoạt tải ảnh. Nhưng với cách làm chuẩn hiện nay (dùng thuộc tính gốc của trình duyệt thay vì script lằng nhằng), Googlebot hiểu và đọc được ảnh bình thường. Vấn đề chỉ phát sinh khi ai đó tự code lazy loading kiểu cũ, giấu đường dẫn ảnh thật trong thuộc tính lạ mà bot không nhận ra. Nếu bạn quan tâm bức tranh tốc độ toàn cảnh, đọc thêm bài tốc độ tải website sẽ thấy lazy loading chỉ là một mảnh trong bức tranh lớn.
Khi nào nên bật và khi nào tuyệt đối đừng
Sau nhiều dự án, mình rút ra một danh sách khá rõ ràng. Lazy loading là dao hai lưỡi — đúng chỗ thì sắc bén, sai chỗ thì cứa vào chính mình.
Những chỗ nên bật: ảnh sản phẩm phía dưới trang, thư viện ảnh (gallery), ảnh trong các bài blog dài, video nhúng (iframe YouTube nặng kinh khủng nếu tải sớm), ảnh trong phần bình luận hay nội dung cuối trang. Những thứ này khách phải cuộn mới thấy, nên trì hoãn là hợp lý.
Những chỗ KHÔNG nên bật: ảnh logo, ảnh banner đầu trang, ảnh hero (ảnh lớn ở màn hình đầu), bất cứ ảnh nào hiện ngay khi trang vừa mở. Ngoài ra, đừng lazy những ảnh rất nhỏ như icon — chúng nhẹ tới mức trì hoãn chẳng tiết kiệm được bao nhiêu mà còn thêm việc cho trình duyệt.

Một lưu ý mình hay nhắc khách: dù lazy hay không, luôn khai báo kích thước ảnh (chiều rộng và chiều cao). Nếu không, lúc ảnh tải xong nó sẽ "đẩy" nội dung nhảy lung tung — hiện tượng này tên là layout shift (xê dịch bố cục), và Google trừ điểm nặng cho nó qua chỉ số CLS. Lazy loading mà quên đặt kích thước thì lợi bất cập hại.
Bật lazy loading thực tế thì làm thế nào
Tin vui cho bạn không rành code: ở mức cơ bản nhất, bật lazy loading bây giờ dễ tới bất ngờ. Trình duyệt hiện đại hỗ trợ sẵn một thuộc tính tên loading="lazy" — chỉ cần thêm vào thẻ ảnh là xong, không cần thư viện hay script gì cả. Trình duyệt tự lo phần còn lại.
Nếu bạn dùng WordPress, càng khoẻ: từ lâu WordPress đã tự động thêm lazy loading cho ảnh trong bài viết, bạn gần như không phải động tay. Vấn đề chỉ là phải đảm bảo theme hoặc plugin tốc độ không bật lazy nhầm cho ảnh banner đầu trang — chỗ này mình hay phải vào chỉnh tay cho khách. Còn nếu web bạn dựng bằng nền tảng hiện đại như Next.js, thành phần ảnh của nó đã tích hợp lazy loading thông minh sẵn theo mặc định.

Sau khi bật, đừng quên bước cuối cùng mà nhiều người bỏ qua: đo lại. Mình luôn chạy PageSpeed Insights của Google và tự tay cuộn trang trên điện thoại để chắc rằng ảnh hiện ra kịp lúc, không bị nhấp nháy chỗ trống. Nếu muốn theo dõi xem khách thật trải nghiệm tốc độ ra sao theo thời gian, bạn có thể gắn thêm công cụ đo như mình kể trong bài Google Analytics là gì.
Vài hiểu lầm thường gặp về lazy loading
Hiểu lầm số một: "Cứ lazy hết tất cả ảnh cho nhanh." Sai. Như đã nói, lazy nhầm ảnh đầu trang còn làm chậm cái cảm giác "trang đã mở" của khách. Lazy là để dành sức cho thứ quan trọng tải trước, không phải để trì hoãn vô tội vạ.
Hiểu lầm số hai: "Lazy loading sẽ làm Google không thấy ảnh, mất hết SEO ảnh." Với cách làm chuẩn bằng thuộc tính gốc của trình duyệt thì điều này không còn đúng. Googlebot xử lý được. Chỉ những bản code lazy tự chế kiểu cũ, giấu đường dẫn ảnh, mới gây rắc rối — và đó là lý do nên giao cho người làm nghề thay vì copy đại một đoạn script trên mạng về dán.
Hiểu lầm số ba: "Bật lazy là web tự nhiên nhanh." Lazy chỉ là một mảnh ghép. Web vẫn chậm nếu ảnh quá nặng chưa nén, máy chủ yếu, hay code rối. Tốc độ là tổng hoà của nhiều thứ — lazy loading giải quyết đúng một bài toán: đừng bắt khách chờ thứ họ chưa nhìn tới. Đây cũng là một phần của việc làm website chuẩn SEO mà mình luôn nhắc khách ngay từ khâu thiết kế chứ không phải chữa cháy về sau.
Túm lại
Nếu phải gói gọn trong một câu: lazy loading là cách bảo trình duyệt "đừng vội, để tới đâu tải tới đó" với những phần nặng phải cuộn mới thấy — nhờ vậy trang mở nhanh hơn, đỡ tốn dữ liệu của khách, và điểm trải nghiệm trong mắt Google cũng đẹp hơn. Nhưng nhớ kỹ hai điều: ảnh ở màn hình đầu thì để tải ngay đừng lazy, và ảnh nào cũng phải khoá sẵn kích thước để khỏi nhảy bố cục.
Nó không phải đũa thần biến web chậm thành nhanh trong một nốt nhạc, mà là một mảnh ghép quan trọng trong bức tranh tốc độ tổng thể. Làm đúng thì lợi cả đôi đường: khách hài lòng, Google cũng gật đầu. Làm sai thì phản tác dụng — nên thà chậm mà chắc, rà từng nhóm ảnh cho đúng còn hơn bật đại rồi tự cứa chân mình.
Bên mình — Thiết Kế Web Giá Rẻ — làm web trọn gói từ 1.990.000đ gói Cơ bản, 3.990.000đ gói Pro, từ 7.990.000đ gói VIP. Mọi gói tặng tên miền, hosting và chứng chỉ bảo mật SSL năm đầu, bàn giao 3–7 ngày. Mời xem bảng giá trọn gói, tư vấn riêng thì nhắn qua trang liên hệ hoặc Zalo 0777 716 863.
Cần một website giá rẻ, chuẩn SEO?
Nhận tư vấn và báo giá miễn phí ngay hôm nay.