{"id":16847,"date":"2020-03-06T16:21:11","date_gmt":"2020-03-06T09:21:11","guid":{"rendered":"https:\/\/kiencang.net\/?p=14822"},"modified":"2020-03-06T16:21:11","modified_gmt":"2020-03-06T09:21:11","slug":"giup-website-tai-nhanh-hon-voi-preconnect-tang-toc-video-font-van-van","status":"publish","type":"post","link":"https:\/\/kiencang.net\/giup-website-tai-nhanh-hon-voi-preconnect-tang-toc-video-font-van-van\/","title":{"rendered":"Gi\u00fap website t\u1ea3i nhanh h\u01a1n v\u1edbi preconnect (t\u0103ng t\u1ed1c video, font, v\u00e2n v\u00e2n)"},"content":{"rendered":"\n

V\u1edbi g\u1ee3i \u00fd t\u00e0i nguy\u00ean c\u1ee7a preconnect, b\u1ea1n c\u00f3 th\u1ec3 gi\u1ea3m \u0111\u1ed9 tr\u1ec5 y\u00eau c\u1ea7u v\u00e0 l\u00e0m website t\u1ea3i nhanh h\u01a1n.<\/p>Jeremy Frank<\/cite><\/blockquote>\n\n\n

Y\u00eau c\u1ea7u m\u1ed9t t\u00e0i nguy\u00ean b\u00ean ngo\u00e0i website ho\u1eb7c \u1ee9ng d\u1ee5ng l\u00e0m ph\u00e1t sinh m\u1ed9t s\u1ed1 v\u00f2ng l\u1eb7p kh\u1ee9 h\u1ed3i (round-trips) tr\u01b0\u1edbc khi tr\u00ecnh duy\u1ec7t c\u00f3 th\u1ec3 th\u1ef1c s\u1ef1 t\u1ea3i t\u00e0i nguy\u00ean \u0111\u00f3 v\u1ec1. C\u00e1c v\u00f2ng l\u1eb7p kh\u1ee9 h\u1ed3i n\u00e0y bao g\u1ed3m t\u00ecm ki\u1ebfm DNS<\/a>, TCP handshake, v\u00e0 \u0111\u00e0m ph\u00e1n TLS (n\u1ebfu SSL- t\u1ee9c li\u00ean k\u1ebft b\u1ea3o m\u1eadt \u0111\u01b0\u1ee3c d\u00f9ng).<\/p>\n\n\n

\"t\u00ecm<\/figure>\n\n\n

Ph\u1ee5 thu\u1ed9c v\u00e0o t\u00ecnh hu\u1ed1ng c\u1ee5 th\u1ec3 c\u1ee7a trang v\u00e0 \u0111i\u1ec1u ki\u1ec7n m\u1ea1ng, c\u00e1c v\u00f2ng l\u1eb7p kh\u1ee9 h\u1ed3i n\u00e0y c\u00f3 th\u1ec3 b\u1ed5 sung h\u00e0ng tr\u0103m mili gi\u00e2y \u0111\u1ed9 tr\u1ec5, th\u1eadm ch\u00ed c\u00f2n h\u01a1n n\u1eefa. N\u1ebfu b\u1ea1n y\u00eau c\u1ea7u c\u00e1c t\u00e0i nguy\u00ean t\u1eeb v\u00e0i host kh\u00e1c nhau, con s\u1ed1 n\u00e0y c\u00f3 th\u1ec3 t\u0103ng l\u00ean nhanh ch\u00f3ng, v\u00e0 b\u1ea1n c\u00f3 th\u1ec3 th\u1ea5y trang t\u1ea3i ch\u1eadm h\u01a1n, \u0111\u1eb7c bi\u1ec7t tr\u00ean k\u1ebft n\u1ed1i di \u0111\u1ed9ng, m\u1ea1ng wifi kh\u00f4ng \u1ed5n \u0111\u1ecbnh, ho\u1eb7c khi ngh\u1ebdn m\u1ea1ng.<\/p>\n\n\n

M\u1ed9t trong c\u00e1c c\u00e1ch d\u1ec5 d\u00e0ng nh\u1ea5t \u0111\u1ec3 t\u0103ng t\u1ed1c website<\/a> ho\u1eb7c \u1ee9ng d\u1ee5ng \u0111\u00f3 l\u00e0 th\u00eam g\u1ee3i \u00fd preconnect<\/strong> cho b\u1ea5t c\u1ee9 host n\u00e0o m\u00e0 b\u1ea1n s\u1ebd y\u00eau c\u1ea7u t\u1ea3i t\u00e0i nguy\u00ean t\u1eeb n\u00f3 (*). C\u00e1c g\u1ee3i \u00fd n\u00e0y v\u1ec1 b\u1ea3n ch\u1ea5t n\u00f3i cho tr\u00ecnh duy\u1ec7t bi\u1ebft host g\u1ed1c n\u01a1i ch\u1ee9a c\u00e1c t\u00e0i nguy\u00ean, v\u00ec th\u1ebf n\u00f3 c\u00f3 th\u1ec3 chu\u1ea9n b\u1ecb m\u1ecdi th\u1ee9 b\u1eb1ng c\u00e1ch thi\u1ebft l\u1eadp m\u1ecdi k\u1ebft n\u1ed1i c\u1ea7n thi\u1ebft<\/em> cho c\u00e1c t\u00e0i nguy\u00ean \u0111\u00f3.<\/p>\n\n\n

B\u00ean d\u01b0\u1edbi l\u00e0 m\u1ed9t v\u00e0i t\u00ecnh hu\u1ed1ng khi m\u00e0 vi\u1ec7c b\u1ed5 sung g\u1ee3i \u00fd preconnect c\u00f3 th\u1ec3 l\u00e0m m\u1ecdi th\u1ee9 t\u1ea3i nhanh h\u01a1n.<\/p>\n\n\n

(*)- Ch\u00fa th\u00edch c\u1ee7a ng\u01b0\u1eddi d\u1ecbch: preconnect \u0111\u1ebfn m\u1ecdi t\u00e0i nguy\u00ean c\u1ee7a b\u00ean th\u1ee9 ba \u0111\u00e3 \u0111\u01b0\u1ee3c ch\u1ee9ng minh l\u00e0 c\u00f3 th\u1ec3 l\u00e0m website hi\u1ec3n th\u1ecb ch\u1eadm \u0111i<\/a> so v\u1edbi vi\u1ec7c preconnect c\u1ea9n th\u1eadn, c\u00f3 ch\u1ecdn l\u1ecdc.<\/p>\n\n\n

Hi\u1ec3n th\u1ecb Google font nhanh h\u01a1n<\/h2>\n\n\n

Google font c\u00f3 ch\u1ea5t l\u01b0\u1ee3ng t\u1ed1t. \u0110\u00e2y l\u00e0 d\u1ecbch v\u1ee5 \u0111\u00e1ng tin c\u1eady v\u00e0 c\u00f3 t\u1ed1c \u0111\u1ed9 cao do s\u1eed d\u1ee5ng m\u1ea1ng CDN to\u00e0n c\u1ea7u c\u1ee7a \u00f4ng l\u1edbn Google. Tuy nhi\u00ean, v\u00ec c\u00e1c ch\u1ec9 d\u1eabn @font-face<\/a> tr\u01b0\u1edbc h\u1ebft ph\u1ea3i \u0111\u01b0\u1ee3c t\u00ecm th\u1ea5y trong file CSS tr\u01b0\u1edbc khi tr\u00ecnh duy\u1ec7t th\u1ef1c hi\u1ec7n c\u00e1c y\u00eau c\u1ea7u v\u1ec1 font cho web, \u0111i\u1ec1u n\u00e0y th\u01b0\u1eddng c\u00f3 th\u1ec3 g\u00e2y \u0111\u1ed9 tr\u1ec5 hi\u1ec3n th\u1ecb<\/a> (hi\u1ec7n t\u01b0\u1ee3ng FOIT) \u0111\u00e1ng ch\u00fa \u00fd trong khi trang render<\/a>. Ch\u00fang ta c\u00f3 th\u1ec3 gi\u1ea3m \u0111\u00e1ng k\u1ec3 \u0111\u1ed9 tr\u1ec5 n\u00e0y b\u1eb1ng c\u00e1ch th\u00eam g\u1ee3i \u00fd preconnect nh\u01b0 b\u00ean d\u01b0\u1edbi \u0111\u00e2y!<\/p>\n\n\n

<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin><\/code><\/pre>\n\n\n

Sau khi l\u00e0m \u0111i\u1ec1u \u0111\u00f3, b\u1ea1n s\u1ebd d\u1ec5 d\u00e0ng nh\u1eadn ra s\u1ef1 kh\u00e1c bi\u1ec7t trong b\u1ea3ng waterfall<\/a> b\u00ean d\u01b0\u1edbi. Vi\u1ec7c th\u00eam preconnect lo\u1ea1i b\u1ecf ba v\u00f2ng l\u1eb7p kh\u1ee9 h\u1ed3i t\u1eeb tuy\u1ebfn hi\u1ec3n th\u1ecb quan tr\u1ecdng<\/a> v\u00e0 c\u1eaft b\u1ecf h\u01a1n 0,5 gi\u00e2y \u0111\u1ed9 tr\u1ec5.<\/p>\n\n\n

\"c\u1eaft
C\u1eaft gi\u1ea3m h\u01a1n 0,5 gi\u00e2y \u0111\u1ed9 tr\u1ec5 v\u1edbi preconnect<\/figcaption><\/figure>\n\n\n

Preconnect \u00e1p d\u1ee5ng cho tr\u01b0\u1eddng h\u1ee3p c\u1ee5 th\u1ec3 n\u00e0y cho l\u1ee3i \u00edch r\u00f5 r\u00e0ng nh\u1ea5t, n\u00f3 gi\u00fap gi\u1ea3m ch\u1eb7n hi\u1ec3n th\u1ecb v\u00e0 c\u1ea3i thi\u1ec7n th\u1eddi gian hi\u1ec3n th\u1ecb website.<\/p>\n\n\n

L\u01b0u \u00fd r\u1eb1ng \u0111\u1eb7c t\u1ea3 font-face y\u00eau c\u1ea7u font \u0111\u01b0\u1ee3c t\u1ea3i trong “ch\u1ebf \u0111\u1ed9 \u1ea9n danh\/anonymous mode”, \u0111i\u1ec1u \u0111\u00f3 gi\u1ea3i th\u00edch t\u1ea1i sao thu\u1ed9c t\u00ednh crossorigrin l\u00e0 c\u1ea7n thi\u1ebft trong g\u1ee3i \u00fd preconnect.<\/em><\/p>\n\n\n

Hi\u1ec3n th\u1ecb video nhanh h\u01a1n<\/h2>\n\n\n

N\u1ebfu b\u1ea1n c\u00f3 video trong khung nh\u00ecn thi\u1ebft b\u1ecb khi t\u1ea3i trang, ho\u1eb7c n\u1ebfu b\u1ea1n s\u1eed d\u1ee5ng t\u00ednh n\u0103ng lazy load c\u00e1c video n\u1eb1m b\u00ean d\u01b0\u1edbi<\/a>, th\u1ebf th\u00ec b\u1ea1n c\u00f3 th\u1ec3 s\u1eed d\u1ee5ng preconnect \u0111\u1ec3 gi\u00fap c\u00e1c t\u00e0i nguy\u00ean c\u1ea7n cho tr\u00ecnh ph\u00e1t (player) v\u00e0 \u1ea3nh \u0111\u1ea1i di\u1ec7n (thumbnail) hi\u1ec3n th\u1ecb nhanh h\u01a1n m\u1ed9t ch\u00fat. V\u1edbi video YouTube, b\u1ea1n s\u1eed d\u1ee5ng c\u00e1c g\u1ee3i \u00fd preconnect sau<\/a>:<\/p>\n\n\n

<link rel=\"preconnect\" href=\"https:\/\/www.youtube.com\">\n<link rel=\"preconnect\" href=\"https:\/\/i.ytimg.com\">\n<link rel=\"preconnect\" href=\"https:\/\/i9.ytimg.com\">\n<link rel=\"preconnect\" href=\"https:\/\/s.ytimg.com\"><\/code><\/pre>\n\n\n

Roboto hi\u1ec7n l\u00e0 font \u0111\u01b0\u1ee3c d\u00f9ng trong tr\u00ecnh ph\u00e1t c\u1ee7a YouTube, v\u00ec th\u1ebf b\u1ea1n c\u0169ng c\u00f3 th\u1ec3 mu\u1ed1n preconnect t\u1edbi host c\u1ee7a Google font n\u1ebfu b\u1ea1n v\u1eabn ch\u01b0a th\u1ef1c hi\u1ec7n.<\/p>\n\n\n

<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin><\/code><\/pre>\n\n\n

C\u1ea5u tr\u00fac t\u01b0\u01a1ng t\u1ef1 c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c \u00e1p d\u1ee5ng cho c\u00e1c d\u1ecbch v\u1ee5 video kh\u00e1c, ch\u1eb3ng h\u1ea1n nh\u01b0 Vimeo- n\u01a1i m\u00e0 ch\u1ec9 c\u00f3 hai host \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng l\u00e0: vimeo.com v\u00e0 vimeocdn.com<\/p>\n\n\n

P\/S: <\/p>\n\n\n