{"id":16873,"date":"2020-04-06T20:48:17","date_gmt":"2020-04-06T13:48:17","guid":{"rendered":"https:\/\/kiencang.net\/?p=15933"},"modified":"2020-04-06T20:48:17","modified_gmt":"2020-04-06T13:48:17","slug":"trai-nghiem-link-preconnect","status":"publish","type":"post","link":"https:\/\/kiencang.net\/trai-nghiem-link-preconnect\/","title":{"rendered":"Tr\u1ea3i nghi\u1ec7m th\u1ef1c t\u1ebf v\u1edbi link rel=preconnect, s\u1eed d\u1ee5ng Script t\u00f9y ch\u1ec9nh b\u01a1m v\u00e0o WebPageTest"},"content":{"rendered":"\n

V\u00e0i l\u1eddi c\u1ee7a ng\u01b0\u1eddi d\u1ecbch: B\u00e0i vi\u1ebft n\u00e0y minh h\u1ecda cho m\u1ed9t th\u1ef1c t\u1ebf<\/strong> l\u00e0 kh\u00f4ng ph\u1ea3i b\u1ea1n c\u1ee9 preconnect \u0111\u1ebfn t\u1ea5t c\u1ea3 c\u00e1c t\u00e0i nguy\u00ean c\u1ee7a b\u00ean th\u1ee9 ba l\u00e0 s\u1ebd gi\u00fap trang c\u1ee7a b\u1ea1n t\u1ea3i nhanh h\u01a1n ho\u1eb7c\/v\u00e0 hi\u1ec3n th\u1ecb nhanh h\u01a1n cho ng\u01b0\u1eddi d\u00f9ng. \u0110i\u1ec1u n\u00e0y l\u00e0 m\u1ed9t l\u1eddi c\u1ea3nh t\u1ec9nh cho ch\u00fang ta, v\u00e0 preconnect c\u0169ng gi\u1ed1ng nh\u01b0 m\u1ecdi th\u1ee9 kh\u00e1c, l\u1ea1m d\u1ee5ng n\u00f3 kh\u00f4ng h\u1ec1 t\u1ed1t (\u01b0u ti\u00ean m\u1ecdi th\u1ee9, ngh\u0129a l\u00e0 kh\u00f4ng c\u00f3 \u01b0u ti\u00ean n\u00e0o h\u1ebft). C\u00e1ch ph\u00f2ng tr\u00e1nh \u0111i\u1ec1u n\u00e0y l\u00e0 tr\u01b0\u1edbc h\u1ebft b\u1ea1n ph\u1ea3i x\u00e1c \u0111\u1ecbnh r\u00f5 nh\u1eefng g\u00ec quan tr\u1ecdng v\u1edbi website, k\u1ebft n\u1ed1i tr\u01b0\u1edbc \u0111\u1ebfn c\u00e1c t\u00e0i nguy\u00ean qu\u1ea3ng c\u00e1o ch\u1eb3ng h\u1ea1n, ch\u1ec9 l\u00e0 \u0111i\u1ec1u n\u00ean l\u00e0m n\u1ebfu b\u1ea1n cho l\u00e0 n\u00ean nh\u01b0 th\u1ebf, c\u00f2n n\u1ebfu kh\u00f4ng, ch\u1eafc ch\u1eafn n\u00f3 s\u1ebd l\u00e0m ch\u1eadm trang \u00edt nhi\u1ec1u. M\u1ed9t l\u1eddi nh\u1eafc nh\u1edf kh\u00e1c c\u0169ng kh\u00f4ng k\u00e9m ph\u1ea7n quan tr\u1ecdng, ngay c\u1ea3 khi kh\u00e1 ch\u1eafc m\u1ea9m r\u1ed3i, th\u00ec s\u1ef1 c\u1ea3i ti\u1ebfn hi\u1ec7u su\u1ea5t, t\u1ed1c \u0111\u1ed9 ph\u1ea3i \u0111\u01b0\u1ee3c ch\u1ee9ng minh tr\u00ean th\u1ef1c t\u1ebf th\u00f4ng qua c\u00e1c b\u00e0i ki\u1ec3m tra ch\u1ee9 kh\u00f4ng ch\u1ec9 kh\u1eb3ng \u0111\u1ecbnh tr\u00ean l\u00fd thuy\u1ebft thu\u1ea7n t\u00fay (gi\u1ed1ng slogan c\u1ee7a trang Ki\u1ebfn c\u00e0ng gh\u00ea!). N\u00f3i c\u00e1ch kh\u00e1c ch\u00fang ta s\u1ebd ph\u1ea3i h\u1ecdc h\u1ecfi th\u00eam v\u1ec1 c\u00e1ch ki\u1ec3m tra, \u0111o \u0111\u1ea1c t\u1ed1c \u0111\u1ed9 sao cho \u0111\u00fang<\/a> (chuy\u1ec7n n\u00e0y c\u0169ng ch\u1eb3ng ph\u1ea3i d\u1ec5 nh\u01b0 pha m\u1ef3 t\u00f4m \u0111\u00e2u). OK, gi\u1edd ch\u00fang ta b\u1eaft \u0111\u1ea7u nh\u00e9.<\/p>\n\n\n

—<\/p>\n\n\n

S\u1eed d\u1ee5ng ki\u1ec3u g\u1ee3i \u00fd t\u00e0i nguy\u00ean preconnect<\/a> l\u00e0 c\u00e1ch hay \u0111\u1ec3 t\u0103ng t\u1ed1c n\u1ed9i dung c\u00f3 ngu\u1ed3n g\u1ed1c t\u1eeb b\u00ean th\u1ee9 ba (third-party origins) – n\u00f3 c\u00f3 chi ph\u00ed ng\u1ea7m t\u01b0\u01a1ng \u0111\u1ed1i th\u1ea5p (low overhead), d\u00f9 v\u1eady n\u00f3 kh\u00f4ng ho\u00e0n to\u00e0n mi\u1ec5n ph\u00ed \u0111\u00e2u, v\u00e0 \u01b0u \u0111i\u1ec3m l\u00e0 th\u01b0\u1eddng \u0111\u01b0\u1ee3c tri\u1ec3n khai \u0111\u01b0\u1ee3c m\u1ed9t c\u00e1ch d\u1ec5 d\u00e0ng.<\/p>\n\n\n

\u0110\u00f4i khi n\u00f3 t\u1ea1o ra \u0111\u01b0\u1ee3c c\u1ea3i ti\u1ebfn nh\u1ecf, v\u00e0 \u0111\u00f4i khi l\u00e0 nh\u1eefng c\u00e1i ti\u1ebfn th\u1ef1c s\u1ef1 \u1ea5n t\u01b0\u1ee3ng!<\/p>\n\n\n

C\u00e1c tr\u00ecnh duy\u1ec7t th\u01b0\u1eddng ch\u1ec9 t\u1ea1o k\u1ebft n\u1ed1i t\u1edbi m\u00e1y ch\u1ee7 g\u1ed1c ngay tr\u01b0\u1edbc khi ch\u00fang y\u00eau c\u1ea7u m\u1ed9t t\u00e0i nguy\u00ean t\u1eeb \u0111\u00f3, v\u00ec th\u1ebf v\u1edbi c\u00e1c t\u00e0i nguy\u00ean \u0111\u01b0\u1ee3c ph\u00e1t hi\u1ec7n sau n\u00e0y, ch\u1eb3ng h\u1ea1n nh\u01b0 \u1ea3nh n\u1ec1n trong CSS, fonts, ho\u1eb7c c\u00e1c \u0111o\u1ea1n m\u00e3 JS b\u01a1m v\u00e0o, ho\u1eb7c c\u00e1c t\u00e0i nguy\u00ean \u0111\u01b0\u1ee3c xem l\u00e0 c\u00f3 m\u1ee9c \u0111\u1ed9 \u01b0u ti\u00ean th\u1ea5p, nh\u01b0 c\u00e1ch Chrome \u0111\u1ed1i x\u1eed v\u1edbi \u1ea3nh, s\u1ef1 tr\u00ec ho\u00e3n trong vi\u1ec7c t\u1ea1o k\u1ebft n\u1ed1i tr\u1edf th\u00e0nh m\u1ed9t ph\u1ea7n c\u1ee7a tuy\u1ebfn hi\u1ec3n th\u1ecb quan tr\u1ecdng<\/a> (critical path) cho ngu\u1ed3n t\u00e0i nguy\u00ean.<\/p>\n\n\n

Preconnect cho ph\u00e9p ch\u00fang ta t\u1ea1o ra k\u1ebft n\u1ed1i s\u1edbm – lo\u1ea1i n\u00f3 kh\u1ecfi tuy\u1ebfn hi\u1ec3n th\u1ecb quan tr\u1ecdng cho t\u00e0i nguy\u00ean, cho ph\u00e9p t\u00e0i nguy\u00ean t\u1ea3i v\u1ec1 s\u1edbm h\u01a1n (loaded sooner) v\u00e0 qua \u0111\u00f3 hy v\u1ecdng l\u00e0 s\u1ebd c\u00f3 \u0111\u01b0\u1ee3c s\u1ef1 c\u1ea3i thi\u1ec7n t\u1ed5ng th\u1ec3 v\u1ec1 kh\u00eda c\u1ea1nh hi\u1ec7u su\u1ea5t, t\u1ed1c \u0111\u1ed9 c\u1ee7a trang.<\/p>\n\n\n

Tri\u1ec3n khai preconnect th\u01b0\u1eddng l\u00e0 c\u1ea3i ti\u1ebfn \u0111\u1ea7u ti\u00ean t\u00f4i khuy\u00ean kh\u00e1ch h\u00e0ng th\u1ef1c hi\u1ec7n, nh\u01b0ng t\u00f4i ch\u01b0a bao gi\u1edd ho\u00e0n to\u00e0n h\u00e0i l\u00f2ng v\u1edbi qu\u00e1 tr\u00ecnh x\u1eed l\u00fd c\u1ee7a m\u00ecnh…<\/p>\n\n\n

Lighthouse<\/a> cung c\u1ea5p m\u1ed9t s\u1ed1 khuy\u1ebfn ngh\u1ecb v\u1ec1 c\u00e1c m\u00e1y ch\u1ee7 g\u1ed1c c\u1ea7n preconnect, nh\u01b0ng t\u00f4i c\u00f3 xu h\u01b0\u1edbng k\u1ebft h\u1ee3p c\u1ea3 WebPageTest<\/a> v\u00e0 DevTools \u0111\u1ec3 x\u00e1c \u0111\u1ecbnh \u1ee9ng c\u1eed vi\u00ean ti\u1ec1m n\u0103ng.<\/p>\n\n\n

Khi t\u00f4i \u0111\u01b0a ra khuy\u1ebfn ngh\u1ecb cho kh\u00e1ch h\u00e0ng c\u1ee7a m\u00ecnh, \u0111\u1ed9i ng\u0169 l\u1eadp tr\u00ecnh vi\u00ean c\u1ee7a h\u1ecd s\u1ebd tri\u1ec3n khai c\u00e1c h\u01b0\u1edbng d\u1eabn preconnect v\u00e0 ch\u00fang t\u00f4i th\u01b0\u1eddng ki\u1ec3m tra \u1ea3nh h\u01b0\u1edfng tr\u00ean m\u00f4i tr\u01b0\u1eddng ti\u1ec1n s\u1ea3n ph\u1ea7m (pre-production) v\u00e0 th\u1ef1c hi\u1ec7n \u0111i\u1ec1u ch\u1ec9nh th\u00eam n\u1ebfu th\u1ea5y c\u1ea7n thi\u1ebft.<\/p>\n\n\n

N\u1ebfu t\u00f4i ng\u1ed3i ngay b\u00ean \u0111\u1ed9i ph\u00e1t tri\u1ec3n c\u1ee7a h\u1ecd, quy tr\u00ecnh l\u1eb7p l\u1ea1i n\u00e0y c\u00f3 th\u1ec3 di\u1ec5n ra nhanh ch\u00f3ng, nh\u01b0ng n\u1ebfu kh\u00e1ch h\u00e0ng s\u1eed d\u1ee5ng \u0111\u1ed9i ng\u0169 ph\u00e1t tri\u1ec3n b\u00ean ngo\u00e0i, ho\u1eb7c c\u00e1c \u0111\u1ed9i ng\u0169 ki\u1ec3u offshore (l\u00e0m vi\u1ec7c \u1edf c\u00e1c thi\u00ean \u0111\u01b0\u1eddng thu\u1ebf), quy tr\u00ecnh n\u00e0y c\u00f3 th\u1ec3 m\u1ea5t nhi\u1ec1u th\u1eddi gian h\u01a1n.<\/p>\n\n\n

\u0110i\u1ec1u t\u00f4i mu\u1ed1n l\u00e0m l\u00e0 bi\u1ec7n ph\u00e1p n\u00e0o \u0111\u1ea5y m\u00e0 t\u00f4i c\u00f3 th\u1ec3 th\u1eed nghi\u1ec7m, \u0111\u00e1nh gi\u00e1 c\u00e1c t\u00f9y ch\u1ecdn v\u00e0 ch\u1ee9ng minh \u0111\u01b0\u1ee3c l\u1ee3i \u00edch tr\u01b0\u1edbc khi kh\u00e1ch h\u00e0ng cam k\u1ebft bi\u1ebfn c\u00e1c l\u1eddi khuy\u00ean c\u1ee7a t\u00f4i th\u00e0nh m\u00e3 tr\u00ean trang c\u1ee7a h\u1ecd.<\/p>\n\n\n

Sau \u0111\u00f3 t\u00f4i nh\u1edb ra r\u1eb1ng WebPageTest c\u00f3 kh\u1ea3 n\u0103ng b\u01a1m m\u00e3 t\u00f9y bi\u1ebfn v\u00e0o trong trang c\u1ea7n ki\u1ec3m tra… T\u00f4i c\u00f3 th\u1ec3 t\u1ea1o m\u1ed9t script (JS) \u0111\u1ec3 th\u00eam c\u00e1c ch\u1ec9 th\u1ecb preconnect v\u00e0 xem \u1ea3nh h\u01b0\u1edfng c\u1ee7a c\u00e1c t\u00f9y ch\u1ecdn kh\u00e1c nhau l\u00ean t\u1ed1c \u0111\u1ed9 trang.<\/p>\n\n\n

\n
\n

M\u1ee5c l\u1ee5c<\/p>\n