๋ด๊ฐ ์ฌ์ฉ์๋ผ๋ ๋๋ คํฐ์ง ์น์ฌ์ดํธ์๋ ๋ค์ ์ ์ํ๊ณ ์ถ์ง ์๋ค. ๋ง์ฝ ์น์ฌ์ดํธ๊ฐ ์ฌ์ฉ์๊ฐ ๋ถํธํจ์ ๋๋ ์ ๋๋ก ํผํฌ๋จผ์ค์ ๋ฌธ์ ๊ฐ ์๋ค๋ฉด ์น์ฌ์ดํธ์ ์ฑ๋ฅ๊ฐ์ ์ด ํ์ํ ๊ฒ์ด๋ค.
์๋์์ ์ด๋ป๊ฒ ์น์ฌ์ดํธ์ ์ฑ๋ฅ๊ฐ์ ์ ํ ์ ์์์ง ์์๋ณด์.
๋จผ์ ์น์ฌ์ดํธ๊ฐ ๋๋ฆฌ๋ค๋ฉด ์ ๋๋ฆฐ์ง ๋ฌธ์ ๋ฅผ ๋จผ์ ํ์ ํ๊ณ , ๊ทธ ๋ฌธ์ ์ ๋ง๋ ํด๊ฒฐ์ฑ ์ ์ฐพ์์ผํ๊ธฐ๋๋ฌธ์ "์ธก์ "์ ํ๋ ๊ณผ์ ์ด ์ค์ํ๋ค. chrome ๋ธ๋ผ์ฐ์ ์ Lighthouse๋ WebPageTest๋ฅผ ํตํด ์น์ฌ์ดํธ์ ์๋๊ฐ ๋๋ฆฐ ์ด์ ๋ฅผ ์ฐพ์๋ณผ ์ ์๋ค. ์์๊ฐ ์์ผ๋ฉด ์ข์ผ๋, Lighthouse๋ฅผ ํตํด ํ ํ๋ก์ ํธ์ ์ฑ๋ฅ ๋ถ์ ๋ฆฌํฌํธ๋ฅผ ๋ง๋ค์ด ๋ณด๋๋ก ํ๊ฒ ๋ค.
์ด๋ฐ์์ผ๋ก ์ฑ๋ฅ ๋ถ์ ๋ฆฌํฌํธ๋ฅผ ํตํด ์น์ฌ์ดํธ์ ์๋๊ฐ ๋๋ฆฐ ์ด์ ๋ฅผ ์ฐพ์ ์ ์๊ณ , ์ด๋ฅผ ํ ๋๋ก ์ด๋ป๊ฒ ์น์ฌ์ดํธ์ ์ฑ๋ฅ์ ๊ฐ์ ํ ์ ์๋ค. ๋ด๊ฐ ํ์ ํ ๋ฌธ์ ์ ๋ค์ ์๋์ ๊ฐ์๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ค์ ์ด๋ป๊ฒ ํด๊ฒฐํ ์ ์๋์ง ๊ทธ๋ฆฌ๊ณ ๋ ์์ธํ ๋ถ์์, ์ด๋ฒ ๊ธ ํ๋ก ํธ์๋ ์ฑ๋ฅ ๊ฐ์ ํ๊ธฐ (๋ก๋ฉ)๊ณผ ๋ค์ ๊ธ์ธ ๋ ๋๋งํธ์ผ๋ก ๋๋์ด์ ์ดํด๋ณด๋๋ก ํ๊ฒ ๋ค.
๊ฐ์ฅ ๋จผ์ ์๋ด์ผํ ๋ถ๋ถ์ "์ด๋ฏธ์ง"์ด๋ค. ์๋ ์ฌ์ง์ ์น์ฌ์ดํธ์ ์ ์ํ๋ฉด ๊ฐ์ ธ์ค๋ ๋ฆฌ์์ค์ธ๋ฐ, ์ด๋ฏธ์ง๊ฐ ๋ฌด๋ฌ 6MB๋ฅผ ๋๋ ์์ค์ผ๋ก ์๋์ ์ธ ์ฉ๋์ ์ฐจ์งํ๊ณ ์๋ค. ํ์ผํ์์ ๋ณ๊ฒฝ๊ณผ ์์ถ์ด ์ฌ์ฉํด๋ณผ ์ ์๋ ๋ฐฉ๋ฒ์ด๋ค.
๊ฐ์ฅ ๋จผ์ png
, gif
์ฒ๋ผ ์ฉ๋์ด ํฐ ํ์ผํ์์ webp
,mp4
๋ฑ์ผ๋ก ๋ณํํ ์ ์๋ค. webpack
์์ ํ๋ฌ๊ทธ์ธ์ ํ์ฉํด์ ๋ฒ๋ค ์์ ์ฌ๋ฌ ์ค์ ์ ํตํด ์ฉ๋์ ์ค์ด๊ฑฐ๋, ํ์์ ๋ฐ๊ฟ์ค ์๋ ์๊ณ , ์ง์ sqoose ๊ฐ์ ์ฌ๋ฌ ์ฌ์ดํธ๋ฅผ ์ด์ฉํ ์๋ ์๋ค. ์๋ํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์ ๋ง ๋ง๊ณ ํ๋์ ์ ๋ต๋ณด๋ค๋ ์ํฉ์ ๋ง๊ฒ ํ๋๊ฒ ๋ง๋ ๊ฒ ๊ฐ์ ๊ฐ๋จํ ์๊ฐ๋ง ํ๊ฒ ๋ค!
๋ค์์ ์ดํด๋ณผ ๋ด์ฉ์ ์์ค์ฝ๋์ด๋ค. ์ฌ๊ธฐ์ ์นํฉ์ด ๋ฒ๋ค๋งํ main.xxx.js
ํ์ผ์ ์ฌ์ด์ฆ๊ฐ ๋ฌด๋ ค 1.7MB ์์ค์ผ๋ก ์ด ๋ฒ๋คํ์ผ์ด ์๋ต์ด ์๋ฃ๋๊ธฐ ์ ๊น์ง ์น์ฌ์ดํธ๋ ํฐ ๋ฐฐ๊ฒฝ๋ง ๋ณด์ผ ๋ฟ์ด๋ค. ์ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ๋น์ฐํ ์ข์ง ์์ ์ ๋ฐ์ ์์ผ๋ฏ๋ก ๋ฒ๋ค๋ง๋ ํ์ผ์ ํฌ๊ธฐ๋ฅผ ์ค์ฌ๋ณด์!
minify(์์ถ)์ ์ฝ๋์ ๋ถํ์ํ ์ค๋ฐ๊ฟ, ๊ณต๋ฐฑ ๋ฐ ๋ค์ฌ์ฐ๊ธฐ, ์งง๊ฒ ์ธ ์ ์๋ ๊ธด ๊ตฌ๋ฌธ ๋ฑ๋ฑ์ ์ ๊ฑฐํ๊ฑฐ๋ ์์ ํ์ฌ ์์ค ์ฝ๋์ ํ์ผ ์ฉ๋์ ์ค์ผ ์ ์๋ค.
๊ทธuglify(๋๋
ํ)๋ ์ฝ๋๋ฅผ ์ฝ๊ธฐ ํ๋ค๊ฒ ๋ง๋๋ ๊ณผ์ ์ด๋ค. ๋ณ์๋ช
, ํจ์๋ช
๋ค์ด ์งง์์ ธ ์ฉ๋์ ์ค์ผ ์ ์์ผ๋, ๋๋
ํ ์์ค์ด ๋์์ง์๋ก ์ฝ๋๋ฅผ ํด์ํ๊ณ ์คํํ๋ ์๊ฐ์ด ์ค๋๊ฑธ๋ฆด ์ ์๋ค.
bundle.js ํ์ผ์ webpack5 ๊ธฐ์ค์ผ๋ก minify, uglify๊ฐ TerserPlugin
์ด ๋ด์ฅ ๋์ด production ๋ชจ๋์์๋ ๊ธฐ๋ณธ์ผ๋ก ์ต์ ํ๊ฐ ์งํ๋๋ค. webpack5๋ก ํ๋ก์ ํธ๋ฅผ ์งํํ๊ณ ์๊ธฐ์ ์ด ๊ณผ์ ์ ์๋ตํ๋ค.
๋ํ CSS-in-JS๋ babel ํธ๋์คํ์ผ๋ง ๊ณผ์ ์์ ์ต์ ํ๋๊ธฐ ๋๋ฌธ์ CSS-in-CSS์ธ ๊ฒฝ์ฐ์๋ง ์์ถํ ๋๋ ํ๋ฅผ ์ ์ฉํด์ฃผ๋ฉด ๋๋ค. ํ๋ก์ ํธ์์ styled-component๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ด ๋ํ ์๋ตํ๋ค.!
์์ถ์ ์งํํ๋ฉด, ์ผ์ชฝ์ ๋ฒ๋คํ์ผ์ด ์ค๋ฅธ์ชฝ๊ณผ ๊ฐ์ด ๋ณํ๋ค. (๋๋
ํ๋ ์ผ์ชฝ๋ ์งํ๋ ์ํ์ด๋ค.)
์ค์ง ์์ถ ํ๋๋ง์ผ๋ก ์ด์ ๋์ ํ์ผ ์ฉ๋์ ์ค์ผ ์ ์์ผ๋, ๊ผญ ์์ถ๊ณผ ๋๋ ํ๋ฅผ ์ ์ฉํด๋ณด์!
gzip
์ ํ์ผ ์์ถ์ ์ฐ์ด๋ ์ํํธ์จ์ด์ด๋ฉฐ, ํ
์คํธ ํ์ผ์ ์์ถํ๋๋ฐ์ ๋ฐ์ด๋ ์ฑ๋ฅ์ ๊ฐ์ง๊ณ ์๋ค. ๋๋ถ๋ถ์ ๋ธ๋ผ์ฐ์ ๋ gzip์ผ๋ก ์์ถ๋ gz ํ์ฅ์์ ํ์ผ์ ์์ถํด์ ํ ์ ์๋ ๊ธฐ๋ฅ, ์์ถํ๋ก๊ทธ๋จ์ ์ด๋ฏธ ๋ด์ฅํ๊ณ ์๋ค. ๊ทธ๋ ๋ค๋ฉด, ์ฐ๋ฆฌ๋ ๋ฒ๋คํ์ผ์ gzip์ ํตํด ์์ถํด์ ์์ค์ฝ๋์ ์ฉ๋์ ์ค์ผ ์ ์๋ค!
๋จผ์ gzip์ผ๋ก ์์ถ๋ ๋ฒ๋คํ์ผ์ด ํ์ํ๋ค! CompressionWebpackPlugin์ ํตํด ๋น๋ํ ๋ ๋ฒ๋คํ์ผ์ ์์ถํ gz ํ์ฅ์์ ํ์ผ์ ์์ฑํ ์ ์๋ค.
// webpack.config.js
module.exports = {
// ...
plugins: [
new CompressionPlugin({
algorithm: 'gzip',
exclude: /\.(eot|svg|ttf|woff|woff2|png|jpg|gif|webp|txt|map|ico)$/i
}),
],
// ...
};
์๋์ ๊ฐ์ด ์ค์ ์ ํด์ฃผ๋ฉด, ์ ์ธ๋ ํ์ผ ํ์ ์ด์ธ์ ๋ฒ๋คํ์ผ๋ค์ด gzํ์ผ๊ณผ ํจ๊ป ์์ฑ๋๋ค. ์๋ ์ฌ์ง์ ๋ณด๋ฉด gzip์์ถ์ผ๋ก ๋ฒ๋คํ์ผ์ ์ฉ๋์ ๋ํญ ์ค์ธ ๊ฒ์ ํ์ธํ ์ ์๋ค.
ํ์ง๋ง ์์ง ๋๋ ๊ฒ์ด ์๋๋ค. ์๋ฒ์ ๋ธ๋ผ์ฐ์ ๊ฐ์ ์์ถ๋ ํ์ผ์ ๋ณด๋ด๋ ๊ด์ฐฎ๋ค๋ ์ค์ ์ ํด์ฃผ์ด์ผ gzipํ์ผ์ ๋ธ๋ผ์ฐ์ ์์ ๋ฐ์์ ์ฌ์ฉํ ์ ์๋ค.
๋ธ๋ผ์ฐ์ ๊ฐ ์์ถ๋ ์ฝํ
์ธ ๋ฅผ ์๋ฝํ๋ค๋ Accept-Encoding: gzip
ํค๋๋ฅผ ์ถ๊ฐํ ์์ฒญ์ ์๋ฒ์ ๋ณด๋ธ๋ค.
์๋ฒ๊ฐ ์ฝํ
์ธ ๋ฅผ ์์ฒญํ๋ ๋ธ๋ผ์ฐ์ ์ ์์ฒญ์ ๋ฐ์ ํ ํ์ผ์ ์ฐพ๊ณ , ์์ถ๋ ํ์ผ์ด ์กด์ฌํ ๊ฒฝ์ฐ, Content-Encoding: gzip
๋ฅผ ํค๋๋ฅผ ์ถ๊ฐํ์ฌ ์๋ต์ ๋ณด๋ธ๋ค.
๋ธ๋ผ์ฐ์ ๊ฐ ์์ถ๋ ํ์ผ์ ์์ถ์ ํด์ฒดํ๊ณ , ํ์ด์ง๋ฅผ ๊ทธ๋ฆฐ๋ค.
์์ ๊ฐ์ ๊ณผ์ ์ ํตํด ์์ถ๋ ํ์ผ์ ์์ฑํ๊ณ , ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉํ ์ ์๋ค!
์ด๋ ๊ฒ ์ด๋ฏธ์ง์ ํฌ๊ธฐ๋, ์์ค์ฝ๋์ ํฌ๊ธฐ๋ ์ค์ฌ๋ดค์ง๋ง, ์ง๊ธ ์นํฉ์ ๋ฒ๋คํ์ผ์ ๋จ ํ๋๋ก ๋ง๋ค๊ธฐ ๋๋ฌธ์ ํ์ ์๋ ์ฝ๋๋ค์ด ๋ฒ๋คํ์ผ์ ๋ค์ด๊ฐ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
์ด๋ฌํ ์ด์ ๋ก Aํ์ด์ง์์ ํ์ํ ์ฝ๋๋ง์ผ๋ก ๋ฒ๋คํ์ผ ํ๋, Bํ์ด์ง์์ ํ์ํ ์ฝ๋๋ง์ผ๋ก ๋ฒ๋คํ์ผ ํ๋๋ฅผ ๋ง๋ค์ด์ ๊ฐ๊ฐ์ ํ์ํ ๋ ์์ฒญํ๋ฉด ๋ ์๋ต์ ํฌ๊ธฐ๋ฅผ ์ค์ผ ์ ์์ ๊ฒ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ๋ชจ๋์ ์ผ๋ถ๋ง ์ฌ์ฉํจ์๋ ๋ชจ๋ ์ ์ฒด๋ฅผ ๋ฒ๋คํ์ผ์ ํฌํจํ๋ ๋ฌธ์ ๋ ๋ฐ์ํ ์ ์๋ค.
์๋์์ ์ด๋ฅผ ํด๊ฒฐํด๋ณด์!
Code Splitting์ด๋ ์นํฉ์ ํตํด ๋ฒ๋ค๋ง๋ ํ์ผ์ด ํ๋์ผ ๊ฒฝ์ฐ ํ์ด์ง์์ ์ฌ์ฉํ์ง ์๋ ๋ชจ๋๋ค๊น์ง ๋ค์ด๊ฐ ํ์ผ์ด ์ปค์ง ์ ์๊ธฐ ๋๋ฌธ์, ๋ฒ๋ค๋ง๋ ํ์ผ์ด ์ฌ๋ฌ๊ฐ๊ฐ ๋ ์ ์๋๋ก ๋๋๋ ๊ฒ์ ์๋ฏธํ๋ค.
๋จผ์ webpack-bundle-analyzer๋ฅผ ํตํด ํ์ฌ์ ๋ฒ๋คํ์ผ์ ๋ถ์ํด๋ณด์.
ํ๋์ ๋ฒ๋คํ์ผ์ ๋ชจ๋ ํ์ผ์ด ๋ค์ด๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋น์ฅ ํด๋น ํ์ด์ง์์ ๋ถํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ฝ๋๊ฐ ํฌํจ๋์ด ์๋ค.
Code Splitting ํด๋น ๋งํฌ์์ ๋ณด๋ฉด ์๋ง์ ์ฝ๋ ์คํ๋ฆฌํ
๋ฐฉ๋ฒ์ด ์กด์ฌํจ์ ์ ์ ์๋ค. ๊ทธ๋ฌ๋, ํด๋น ํ๋ก์ ํธ๋ react๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์, react์์ ์ ๊ณตํ๋ Suspense
, lazy
๋ฅผ ์ฌ์ฉํด์ ์ฝ๋ ์คํ๋ฆฌํ
์ ์ ์ฉํ๋ค.
// webpack.config.js
module.exports = {
// ...
output: {
filename: '[name].[contenthash].bundle.js',
path: path.join(__dirname, '/dist'),
clean: true
},
// ...
};
์์ webpack ์ค์ ๊น์ง ์๋ฃํ๊ณ ๋ค์ webpack-bundle-analyzer๋ฅผ ํตํด ๋ฒ๋ค ํ์ผ์ ํ์ธํด๋ณด๋ฉด, ์๋์ ๊ฐ์ด ๊ฐ๊ฐ์ ๋ผ์ฐํ ์์ ํ์ํ ์ฝ๋๋ค์ด ๋ถ๋ฆฌ๋์ด ๋ฒ๋คํ์ผ๋ค์ ์์ฑํ์์ ์ ์ ์๋ค.
Tree Shaking ์ฌ์ฉํ์ง ์๋ ์ฝ๋๋ค์ ์ ๊ฑฐํด์ฃผ๋ ๊ฒ์ ์๋ฏธํ๋ค. ESM
์ import
, export
๋ฌธ์ ์ฌ์ฉํด์ผํจ์ผ๋ก, babel
์ด๋ ๋ค๋ฅธ ํ๋ฌ๊ทธ์ธ๋ค์ด CommonJS
๊ฐ์ ๋ค๋ฅธ ๋ชจ๋๋ก ์ฝ๋๋ฅผ ๋ณํํ์ง ์๋๋ก ์ค์ ํด์ฃผ์ด์ผํ๋ค.
ํน์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฝ๋๋ ์๋์ผ๋ก Tree Shaking์ ํด์ฃผ๋ ๊ฒฝ์ฐ๋ ์๋ค๊ณ ํ๋, ํด๋น ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๊ณต์๋ฌธ์๋ฅผ ์ฝ์ด๋ณด๋ ๊ฒ์ด ์ข๋ค.
Tree Shaking์ ์ํด์๋ ๋จผ์ ํ๋ก์ ํธ์์ ์ฌ์ฉํ๋ babel์ด ๋ชจ๋์ ESM์ผ๋ก ์ ์งํ๋๋ก ๋ง๋ค์ด์ค์ผํ๋ค.
ํด๋น ์ค์ ์ด ๋๋๊ณ ๋ ํ๋ก์ ํธ์ ์ด๋ค ํ์ผ์ด "์์"ํ์ง ๋ํ๋ด๋ฉฐ, ๋ง์ฝ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด ์ ๊ฑฐํด๋ ๊ด์ฐฎ์์ง๋ฅผ ์๋ ค์ฃผ๊ธฐ ์ํด package.json์ "sideEffect" ์์ฑ์ ์์ฑํ๋ค.
์ด๋ฅผ ํตํด ์ด๊ณณ์ ํฌํจ๋ ์ฝ๋๋ ์ฌ์ด๋ ์ดํํธ๋ฅผ ํฌํจํจ์ ์๋ฆฌ๊ณ , ์ด์ธ์ ํ์ผ๋ค์ ์ฌ์ฉํ์ง ์๋ export๋ ์ ๊ฑฐํด๋ ๊ด์ฐฎ๋ค๋ ๊ฒ์ webpack์ ์๋ฆด ์ ์๋ค.
์ด๋ฅผ ํตํด ์ด์ ํ์ด์ง๋ฅผ ๋ก๋ํ ๋, ํ์์๋ ์ฝ๋๋ฅผ ๊ฐ์ ธ์ค๋ ์ผ๊น์ง ์ฌ๋ผ์ง๋ค!
์บ์ฑ(caching)์ ์ฃผ์ด์ง ๋ฆฌ์์ค์ ๋ณต์ฌ๋ณธ์ ์ ์ฅํ๊ณ ์๋ค๊ฐ ์์ฒญ ์์ ๊ทธ๊ฒ์ ์ ๊ณตํ๋ ๊ธฐ์ ์ด๋ค. ์น ์บ์๊ฐ ์์ ์ ์ ์ฅ์ ๋ด์ ์์ฒญ๋ ๋ฆฌ์์ค๋ฅผ ๊ฐ์ง๊ณ ์๋ค๋ฉด, ์์ฒญ์ ๊ฐ๋ก์ฑ ์๋์ ์๋ฒ๋ก๋ถํฐ ๋ฆฌ์์ค๋ฅผ ๋ค์ ๋ค์ด๋ก๋ํ๋ ๋์ ๋ฆฌ์์ค์ ๋ณต์ฌ๋ณธ์ ๋ฐํํ๋ค.
๋งค๋ฒ ๊ฐ์ ํ์ด์ง๋ฅผ ๋ค๋ฝ๋ ๋ฝํ๊ฒ๋๋๋ฐ, ๊ทธ ๋๋ง๋ค ๊ณ์ ์์ฒญ์ ๋ณด๋ด ์๋ก์ด ํ์ผ์ ๋ฐ์์ค๋ ๊ฒ๋ณด๋ค๋ ์บ์์ ์ฅ์์ ๋ฆฌ์์ค๋ฅผ ์ ์ฅํด๋๊ณ , ์๋ฒ์ ์์ฒญ์ ๋ณด๋ด์ง ์๊ณ ์ฌ๋ณธ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋์ ๊ฒ ๊ฐ๋ค.
๊ทธ ์ ์, ์บ์์ ๋ํด์ ๊ฐ๋จํ ์ข ์์๋ณด์.
์บ์์๋ ๋ช ๊ฐ์ง ์ข
๋ฅ๊ฐ ์๋๋ฐ ํฌ๊ฒ ์ฌ์ค(private)
, ๊ณต์ (shared)
์บ์ ๋ ๊ฐ์ง๋ก ๋ถ๋ฅ๋๋ค.
๊ณต์ (shared) ์บ์๋ ํ ๋ช
์ด์์ ์ฌ์ฉ์๊ฐ ์ฌ์ฌ์ฉํ ์ ์๋๋ก ์๋ต์ ์ ์ฅํ๋ ์บ์์ด๊ณ , ์ฌ์ค(private) ์บ์๋ ํ ๋ช
์ ์ฌ์ฉ์๋ง ์ฌ์ฉํ๋ ์บ์์ด๋ค.
์บ์๋ ๋ธ๋ผ์ฐ์ ์บ์
, ํ๋ก์ ์บ์
, ๊ฒ์ดํธ์จ์ด ์บ์
, CDN
, ๋ก๋ ๋ฐธ๋ฐ์
๋ฑ์ด ๋ง์ง๋ง, ์ด๋ฒ์๋ ์ง์ ์ฌ์ฉํด๋ณธ โ์ฌ์ค ๋ธ๋ผ์ฐ์ ์บ์โ์ โCDN ์บ์โ ์ด ๋์ ์ค์ฌ์ผ๋ก ์ด์ผ๊ธฐ ํด๋ณด๋๋ก ํ๊ฒ ๋ค.
Cache-control
HTTP/1.1 ๊ธฐ๋ณธ ํค๋ ํ๋๋ฅผ ์ฌ์ฉํด ํด๋ผ์ด์ธํธ์ ์ด๋ป๊ฒ ์บ์ฑํ ์ง๋ฅผ ์ง์ ํ ์ ์๋ค.
Cache-Control: no-store
์บ์๋ ํด๋ผ์ด์ธํธ ์์ฒญ, ์๋ฒ ์๋ต์ ๊ดํด ์ด๋ค ๊ฒ๋ ์ ์ฅํด์๋ ์ ๋๋ค. ์์ฒญ์ ์๋ฒ ์ธก์ผ๋ก ์ ์ก๋๊ณ ์ ์ฒด ์๋ต์ ๋งค๋ฒ ๋ค์ด๋ก๋๋๋ค.
Cache-Control: no-cache
์บ์๋ ๋ณต์ฌ๋ณธ์ ์ฌ์ฉ์์๊ฒ ๋ฆด๋ฆฌ์ฆ ํ๊ธฐ ์ ์, ์ ํจ์ฑ ํ์ธ์ ์ํด ์ ์๋ฒ๋ก ์์ฒญ์ ๋ณด๋ธ๋ค.
Cache-Control: private
์๋ต์ด ๋จ์ผ ์ฌ์ฉ์๋ง์ ์ํ ๊ฒ์ด๋ฉฐ ๊ณต์ ์บ์์ ์ํด ์ ์ฅ๋์ด์๋ ์๋๋ค๋ ๊ฒ์ ๊ฐ๋ฆฌํจ๋ค. ์ฌ์ค ๋ธ๋ผ์ฐ์ ์บ์๋ ์ด๋ฐ ๊ฒฝ์ฐ์ ์๋ต์ ์ ์ฅํ ์ ์๋ค. ์ฆ, public ์บ์์ธ CDN ๋ฑ์์ ์๋ต์ ์บ์ํ ์ ์๋ค.
Cache-Control: public
์๋ต์ด ์ด๋ค ์บ์์ ์ํด์๋ ์บ์๋์ด๋ ์ข๋ค๋ ๊ฒ์ ๊ฐ๋ฆฌํจ๋ค.
Cache-Control: max-age=31536000
๋ฆฌ์์ค๊ฐ ์ ํจํ๋ค๊ณ ํ๋จ๋๋ ์ต๋ ์๊ฐ์ ๋งํ๋ค. Expires๊ฐ ์ค์ ๋์ด ์์ด๋ ๊ทธ๋ณด๋ค ์ฐ์ ํ๋ฉฐ, ๋ณ๊ฒฝ๋์ง ์์ ํ์ผ์ ๋ํด ๊ธด ์๊ฐ์ ์บ์ฑํ ์ ์๋ค.
Cache-Control: must-revalidate
์บ์๋ ์ค๋๋ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๊ทธ ์ํ๋ฅผ ํ์ธํ๊ณ ๋ง๋ฃ๋ ๋ฆฌ์์ค๋ ์ฌ์ฉํ์ง ๋ง์์ผํ๋ค.
Cache-control: max-age=N
Expires
Last-Modified
Cache-control: must-revalidate
Advanced->Cache
ํ๊ฒฝ์ค์ ํจ๋ ๋ด์ ์บ์ ๊ฒ์ฆ ํ๊ฒฝ ์ค์ ETags
Last-Modified
์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ ํตํด ๋ถ์๊ณผ์ ์์ ๋์จ ๋ฌธ์ ์ ๋ค์ ํด๊ฒฐํด๋ณด์๋ค! ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ์ ์ด ๋ฐฉ๋ฒ๋ค ์ด์ธ์๋ ๋ ์์ผ๋, ๋ค์ ๊ธ์ธ ๋ ๋๋งํธ์์ ๋ค๋ฃจ๊ฑฐ๋, ํน์ ๋ค๋ฃจ์ง ์๋ ๋ฐฉ๋ฒ๋ค์ด ์์ ์ ์๋ค! ๊ทธ๋ฐ ๋ฐฉ๋ฒ๋ค์ ์ฐธ๊ณ ์ฉ์ผ๋ก ์๋์ ํค์๋๋ง ๊ฐ๋ณ๊ฒ ์ ์ด๋๋๋ก ํ๊ฒ ๋ค.
์ด๋ฏธ์ง ํฌ๊ธฐ ์ค์ด๊ธฐ: srcset, web font,
ํ์ํ ๋ ํ์ํ ๊ฒ ์์ฒญํ๊ธฐ: HTTP/1.1 vs HTTP/2, preload, prefetch, preconnect, defer, async
๋ ๋ฒจ๋ก๊ทธ์์๋ ์์ ๋ฐฉ๋ฒ์ ์ผ๋ถ์ ๋ ํ์ํ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ํ์ฉํด ์๋์ ๊ฐ์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์๋ค.
์ฑ๋ฅ ๋ถ์์ "FAST 3G" ํ๊ฒฝ์์ ์งํํ๋ค.
gzip ๊ด๋ จํ ์ ๋ณด๊น์ง ๐๐