{"id":16878,"date":"2020-04-13T02:16:56","date_gmt":"2020-04-12T19:16:56","guid":{"rendered":"https:\/\/kiencang.net\/?p=16177"},"modified":"2020-04-13T02:16:56","modified_gmt":"2020-04-12T19:16:56","slug":"tim-hieu-http-caching","status":"publish","type":"post","link":"https:\/\/kiencang.net\/tim-hieu-http-caching\/","title":{"rendered":"T\u00ecm hi\u1ec3u s\u00e2u v\u1ec1 HTTP Caching"},"content":{"rendered":"\n

T\u00ecm n\u1ea1p t\u00e0i nguy\u00ean qua m\u1ea1ng internet v\u1eeba ch\u1eadm, v\u1eeba t\u1ed1n k\u00e9m. C\u00e1c ph\u1ea3n h\u1ed3i n\u1eb7ng y\u00eau c\u1ea7u nhi\u1ec1u v\u00f2ng l\u1eb7p kh\u1ee9 h\u1ed3i (roundtrips) gi\u1eefa m\u00e1y kh\u00e1ch v\u00e0 m\u00e1y ch\u1ee7 (server). \u0110i\u1ec1u n\u00e0y l\u00e0m kh\u1ea3 n\u0103ng hi\u1ec7n di\u1ec7n c\u1ee7a ch\u00fang b\u1ecb tr\u00ec ho\u00e3n, v\u00e0 \u0111\u1ed3ng th\u1eddi l\u00e0m tr\u1ec5 th\u1eddi \u0111i\u1ec3m tr\u00ecnh duy\u1ec7t c\u00f3 th\u1ec3 x\u1eed l\u00fd ch\u00fang<\/a>. N\u00f3 c\u0169ng l\u00e0m ph\u00e1t sinh chi ph\u00ed d\u1eef li\u1ec7u (data cost) c\u1ee7a ng\u01b0\u1eddi duy\u1ec7t web. H\u1ec7 qu\u1ea3 l\u00e0, kh\u1ea3 n\u0103ng cache<\/a> v\u00e0 t\u00e1i s\u1eed d\u1ee5ng c\u00e1c t\u00e0i nguy\u00ean \u0111\u00e3 \u0111\u01b0\u1ee3c t\u00ecm n\u1ea1p tr\u01b0\u1edbc \u0111\u00f3 l\u00e0 m\u1ed9t y\u1ebfu t\u1ed1 quan tr\u1ecdng trong vi\u1ec7c t\u1ed1i \u01b0u h\u00f3a hi\u1ec7u su\u1ea5t, t\u1ed1c \u0111\u1ed9<\/a>.<\/p>\n\n\n

Tin t\u1ed1t l\u00e0 t\u1ea5t c\u1ea3 c\u00e1c tr\u00ecnh duy\u1ec7t \u0111\u1ec1u \u0111\u00e3 tri\u1ec3n khai HTTP cache<\/a>. T\u1ea5t c\u1ea3 nh\u1eefng g\u00ec b\u1ea1n c\u1ea7n l\u00e0 \u0111\u1ea3m b\u1ea3o m\u1ed7i ph\u1ea3n h\u1ed3i c\u1ee7a m\u00e1y ch\u1ee7 cung c\u1ea5p c\u00e1c ch\u1ec9 th\u1ecb header HTTP<\/em> ch\u00ednh x\u00e1c \u0111\u1ec3 h\u01b0\u1edbng d\u1eabn tr\u00ecnh duy\u1ec7t, nh\u1edd v\u1eady n\u00f3 bi\u1ebft \u0111\u01b0\u1ee3c c\u00f3 th\u1ec3 cache m\u1ed9t ph\u1ea3n h\u1ed3i v\u00e0o l\u00fac n\u00e0o v\u00e0<\/em> trong bao l\u00e2u.<\/p>\n\n\n

L\u01b0u \u00fd<\/strong>: N\u1ebfu b\u1ea1n s\u1eed d\u1ee5ng WebView \u0111\u1ec3 t\u00ecm n\u1ea1p v\u00e0 hi\u1ec3n th\u1ecb n\u1ed9i dung web trong \u1ee9ng d\u1ee5ng c\u1ee7a b\u1ea1n, b\u1ea1n c\u00f3 th\u1ec3 c\u1ea7n cung c\u1ea5p c\u00e1c c\u1edd t\u00f9y ch\u1ec9nh b\u1ed5 sung \u0111\u1ec3 \u0111\u1ea3m b\u1ea3o r\u1eb1ng HTTP cache \u0111\u01b0\u1ee3c b\u1eadt, k\u00edch c\u1ee1 c\u1ee7a n\u00f3 \u0111\u01b0\u1ee3c thi\u1ebft l\u1eadp v\u1edbi gi\u00e1 tr\u1ecb h\u1ee3p l\u00fd \u0111\u1ec3 kh\u1edbp v\u1edbi nhu c\u1ea7u c\u1ee7a ri\u00eang b\u1ea1n, v\u00e0 b\u1ed9 nh\u1edb cache \u0111\u01b0\u1ee3c duy tr\u00ec. Tham kh\u1ea3o th\u00eam c\u00e1c t\u00e0i li\u1ec7u c\u0103n b\u1ea3n \u0111\u1ec3 ch\u1eafc ch\u1eafn c\u00e1c c\u00e0i \u0111\u1eb7t c\u1ee7a b\u1ea1n l\u00e0 ch\u00ednh x\u00e1c.<\/p>\n\n\n

\"y\u00eau<\/figure><\/div>\n\n\n

Khi m\u00e1y ch\u1ee7 tr\u1ea3 v\u1ec1 m\u1ed9t ph\u1ea3n h\u1ed3i, n\u00f3 c\u0169ng c\u00f3 th\u1ec3 ph\u00e1t ra m\u1ed9t t\u1eadp h\u1ee3p c\u00e1c header HTTP, d\u00f9ng \u0111\u1ec3 m\u00f4 t\u1ea3 ki\u1ec3u n\u1ed9i dung, \u0111\u1ed9 d\u00e0i, c\u00e1c ch\u1ec9 th\u1ecb caching, token x\u00e1c minh (ETag), v\u00e0 nhi\u1ec1u th\u1ee9 kh\u00e1c n\u1eefa. L\u1ea5y v\u00ed d\u1ee5, trong trao \u0111\u1ed5i \u1edf tr\u00ean, m\u00e1y ch\u1ee7 tr\u1ea3 v\u1ec1 ph\u1ea3n h\u1ed3i c\u00f3 k\u00edch c\u1ee1 1024-byte (content-length), h\u01b0\u1edbng d\u1eabn m\u00e1y kh\u00e1ch cache n\u00f3 trong kho\u1ea3ng th\u1eddi gian 120 gi\u00e2y (cache-control: max-age), v\u00e0 cung c\u1ea5p token x\u00e1c th\u1ef1c “x234dff” (ETag) m\u00e0 c\u00f3 th\u1ec3 \u0111\u01b0\u1ee3c s\u1eed d\u1ee5ng sau khi ph\u1ea3n h\u1ed3i h\u1ebft h\u1ea1n (expired) \u0111\u1ec3 ki\u1ec3m tra xem t\u00e0i nguy\u00ean \u0111\u00e3 c\u00f3 b\u1ea5t k\u1ef3 s\u1eeda \u0111\u1ed5i n\u00e0o hay ch\u01b0a (modified).<\/p>\n\n\n


\n\n\n
\n
\n

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