{"id":15909,"date":"2020-04-06T13:17:59","date_gmt":"2020-04-06T06:17:59","guid":{"rendered":"https:\/\/kiencang.net\/?p=15909"},"modified":"2023-08-25T12:48:59","modified_gmt":"2023-08-25T05:48:59","slug":"lazysizes-lazy-load-anh","status":"publish","type":"post","link":"https:\/\/kiencang.net\/lazysizes-lazy-load-anh\/","title":{"rendered":"S\u1eed d\u1ee5ng lazysizes \u0111\u1ec3 lazy load \u1ea3nh"},"content":{"rendered":"\n

Lazy load l\u00e0 chi\u1ebfn l\u01b0\u1ee3c trong \u0111\u00f3 ng\u01b0\u1eddi ta ch\u1ec9 t\u1ea3i c\u00e1c t\u00e0i nguy\u00ean m\u00e0 ng\u01b0\u1eddi d\u00f9ng c\u1ea7n, ch\u1ee9 kh\u00f4ng t\u1ea3i t\u1ea5t c\u1ea3 tr\u01b0\u1edbc<\/em> trong l\u01b0\u1ee3t t\u1ea3i \u0111\u1ea7u ti\u00ean. C\u00e1ch ti\u1ebfp c\u1eadn n\u00e0y gi\u1ea3i ph\u00f3ng cho c\u00e1c t\u00e0i nguy\u00ean ch\u01b0a c\u1ea7n thi\u1ebft trong l\u1ea7n t\u1ea3i \u0111\u1ea7u ti\u00ean (initial page load) v\u00e0 tr\u00e1nh ph\u1ea3i t\u1ea3i m\u1ed9t s\u1ed1 t\u00e0i nguy\u00ean m\u00e0 c\u00f3 th\u1ec3 ng\u01b0\u1eddi d\u00f9ng s\u1ebd kh\u00f4ng bao gi\u1edd s\u1eed d\u1ee5ng \u0111\u1ebfn<\/em>.<\/p>\n\n\n\n

C\u00e1c \u1ea3nh \u1edf d\u01b0\u1edbi m\u00e0n h\u00ecnh \u0111\u1ea7u ti\u00ean<\/a> (offscreen*) trong l\u1ea7n t\u1ea3i \u0111\u1ea7u ti\u00ean l\u00e0 \u1ee9ng c\u1eed vi\u00ean l\u00fd t\u01b0\u1edfng \u0111\u1ec3 \u00e1p d\u1ee5ng k\u1ef9 thu\u1eadt n\u00e0y. Th\u01b0 vi\u1ec7n c\u00f3 ch\u1ea5t l\u01b0\u1ee3ng c\u1ef1c ph\u1ea9m l\u00e0 lazysizes<\/a> s\u1ebd gi\u00fap b\u1ea1n tri\u1ec3n khai chi\u1ebfn l\u01b0\u1ee3c n\u00e0y m\u1ed9t c\u00e1ch d\u1ec5 d\u00e0ng.<\/p>\n\n\n

\n
\"m\u00e0n<\/figure><\/div>\n\n\n

(*): D\u01b0\u1edbi m\u00e0n h\u00ecnh \u0111\u1ea7u ti\u00ean<\/em>, ti\u1ebfng Anh c\u00f3 th\u1ec3 l\u00e0 Below the fold<\/em> ho\u1eb7c Offscreen<\/em>, c\u00f2n Tr\u00ean m\u00e0n h\u00ecnh \u0111\u1ea7u ti\u00ean<\/em> l\u00e0 Above the fold<\/em>.<\/p>\n\n\n\n


\n\n\n\n

Lazysizes l\u00e0 g\u00ec?<\/h2>\n\n\n\n

Lazysizes (https:\/\/github.com\/aFarkas\/lazysizes<\/a>) l\u00e0 th\u01b0 vi\u1ec7n ph\u1ed5 bi\u1ebfn nh\u1ea5t d\u00f9ng \u0111\u1ec3 lazy load \u1ea3nh. N\u00f3 l\u00e0 m\u1ed9t \u0111o\u1ea1n m\u00e3 JavaScript t\u1ea3i h\u00ecnh \u1ea3nh m\u1ed9t c\u00e1ch th\u00f4ng minh khi ng\u01b0\u1eddi d\u00f9ng cu\u1ed9n n\u1ed9i dung v\u00e0 \u01b0u ti\u00ean cho c\u00e1c \u1ea3nh m\u00e0 ng\u01b0\u1eddi d\u00f9ng s\u1ebd s\u1edbm nh\u00ecn th\u1ea5y (\u0111i v\u00e0o khung nh\u00ecn tr\u00ecnh duy\u1ec7t \/ viewport). <\/p>\n\n\n\n

Lazysizes l\u00e0 l\u1ef1a ch\u1ecdn t\u1ed1t v\u00ec n\u00f3 s\u1eed d\u1ee5ng API Intersection Observer<\/a> (\u1edf tr\u00ecnh duy\u1ec7t n\u00e0o kh\u1ea3 d\u1ee5ng) c\u00f3 hi\u1ec7u n\u0103ng cao \u0111\u1ec3 nh\u1eadn bi\u1ebft ph\u1ea7n t\u1eed n\u00e0o c\u1ee7a trang \u0111ang \u1edf trong viewport. \u0110i\u1ec1u n\u00e0y gi\u00fap n\u00f3 c\u00f3 hi\u1ec7u su\u1ea5t cao h\u01a1n so v\u1edbi c\u00e1c gi\u1ea3i ph\u00e1p c\u0169 s\u1eed d\u1ee5ng c\u00e1ch ti\u1ebfp c\u1eadn ki\u1ec3u nh\u01b0 s\u1eed d\u1ee5ng c\u00e1c tr\u00ecnh x\u1eed l\u00fd s\u1ef1 ki\u1ec7n (event handlers \/ xem v\u00ed d\u1ee5 \u1edf b\u00e0i kiencang.net\/lazy-load-anh-va-video\/#Lazy_load_anh<\/a> \u1edf ph\u1ea7n tr\u00ecnh x\u1eed l\u00fd s\u1ef1 ki\u1ec7n).<\/p>\n\n\n\n

PS: th\u1ed1ng k\u00ea t\u1eeb Can I Use th\u00ec API Intersection Observer<\/a> \u0111\u01b0\u1ee3c t\u1ea5t c\u1ea3 c\u00e1c tr\u00ecnh duy\u1ec7t l\u1edbn h\u1ed7 tr\u1ee3.<\/p>\n\n\n\n


\n\n\n\n

Th\u00eam lazysizes v\u00e0o website<\/h2>\n\n\n\n

\u0110\u00e2y l\u00e0 c\u00e1ch \u0111\u01a1n gi\u1ea3n \u0111\u1ec3 th\u00eam lazysizes:<\/p>\n\n\n\n