Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Trên hầu hết các website, hình ảnh chiếm phần lớn dung lượng tải về. Một vài tấm ảnh chưa tối ưu có thể làm trang chậm hẳn đi, đặc biệt với người dùng điện thoại và mạng yếu. May mắn là tối ưu ảnh là một trong những việc mang lại hiệu quả cao nhất với công sức bỏ ra khá ít.
Quy tắc thực dụng: ảnh chụp dùng WebP hoặc AVIF (kèm JPEG dự phòng nếu cần), biểu tượng và logo dùng SVG.
Lỗi phổ biến là đưa ảnh 4000 pixel rộng vào khung chỉ hiển thị 400 pixel. Trình duyệt vẫn phải tải toàn bộ ảnh lớn. Hãy xuất ảnh với kích thước tương ứng chỗ hiển thị, tính cả màn hình mật độ điểm ảnh cao (thường nhân đôi chiều rộng hiển thị là đủ).
Về nén, thường chất lượng khoảng 70 đến 85 phần trăm cho JPEG hoặc WebP cho kết quả khó phân biệt bằng mắt thường nhưng nhẹ hơn nhiều. Hãy thử nghiệm với ảnh của bạn để chọn mức phù hợp.
Thay vì một ảnh cho mọi thiết bị, bạn cung cấp nhiều phiên bản để trình duyệt chọn:
<img
src='anh-800.jpg'
srcset='anh-400.jpg 400w, anh-800.jpg 800w, anh-1600.jpg 1600w'
sizes='(min-width: 1024px) 800px, 100vw'
width='800' height='450'
alt='Sinh viên đang học lập trình'
>srcset liệt kê các file kèm chiều rộng thật (đơn vị w), còn sizes cho trình duyệt biết ảnh sẽ chiếm bao nhiêu chiều rộng màn hình ở từng điều kiện. Từ đó trình duyệt tự chọn file nhỏ nhất vẫn đủ nét. Điện thoại nhận ảnh nhỏ, màn hình lớn nhận ảnh lớn.
<picture>
<source srcset='anh.avif' type='image/avif'>
<source srcset='anh.webp' type='image/webp'>
<img src='anh.jpg' width='800' height='450' alt='Mô tả ảnh'>
</picture>Trình duyệt duyệt từ trên xuống và dùng nguồn đầu tiên nó hỗ trợ; thẻ img cuối cùng là phương án dự phòng và cũng là nơi đặt alt. Picture cũng dùng được để đổi cách cắt ảnh theo kích thước màn hình (art direction) bằng thuộc tính media.
Ảnh nằm dưới màn hình đầu tiên không cần tải ngay. Thuộc tính gốc của trình duyệt làm việc này rất đơn giản:
<img src='anh-duoi-trang.jpg' loading='lazy' width='800' height='450' alt='...'>Ba lưu ý quan trọng:
fetchpriority='high' để trình duyệt ưu tiên tải.next/image tự thay đổi kích thước, chuyển định dạng hiện đại và lazy load theo mặc định.alt='' để bị bỏ qua.image-set() hoặc cân nhắc dùng thẻ img.Quy trình gọn cho mỗi tấm ảnh: chọn định dạng hiện đại, xuất đúng kích thước, nén vừa đủ, cung cấp srcset khi cần, khai báo width và height, lazy-load ảnh dưới màn hình và viết alt có ý nghĩa. Chỉ riêng những việc này thường đã cải thiện tốc độ trang rõ rệt.
Để áp dụng những kỹ thuật này vào dự án thật từ đầu đến cuối, bạn có thể tham khảo các khóa học web tại codebem.com.
Nguyễn Đình Cường
0 comment