2. Caching

  • Web Application

    • [์‚ฌ์šฉ์ž] <=> [๋ธŒ๋ผ์šฐ์ €(ํด๋ผ์ด์–ธํŠธ)] <=> [์„œ๋ฒ„]

    • ์‚ฌ์šฉ์ž๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ํ†ตํ•ด ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๊ณ 

    • ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋ฒ„์—, ์‚ฌ์šฉ์ž๊ฐ€ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญ

    • ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ณ  ๋ฐ›์„ ๋•Œ, ๋น„์šฉ ๋ฐœ์ƒ (์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•œ ์‹œ๊ฐ„,๊ธฐ๋‹ค๋ฆฌ๋Š” ์‹œ๊ฐ„, ๋ˆ... )

    • ์‚ฌ์šฉ์ž๊ฐ€ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ• ๋•Œ ๋น„์šฉ์„ ์ตœ์†Œํ™” ์‹œํ‚ค๋Š” ๊ฒƒ์€ ์ƒ๋‹นํžˆ ์ค‘์š”ํ•˜๋‹ค.

    • ์ด ์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ์ˆ  '์บ์‹ฑ'

  • ์บ์‹ฑ(Caching))

    • ๋ฆฌ์†Œ์Šค์˜ ๋ณต์‚ฌ๋ณธ์„ ๋†“๊ณ  ์„œ๋ฒ„๋ณด๋‹ค๋Š” ๊ฐ€๊นŒ์šด ์œ„์น˜์— ๋†“๊ณ , ํด๋ผ์ด์–ธํŠธ์—์„œ ์‚ฌ์šฉํ• ์ˆ˜ ์žˆ๊ฒŒ๋”ํ•œ๋‹ค.

    • ์‚ฌ์šฉ์ž์—๊ฒŒ ํ›จ์”ฌ ๋นจ๋ฆฌ ๋ฆฌ์†Œ์Šค๋ฅผ ์ „๋‹ฌํ•˜๊ณ , ์„œ๋ฒ„๋กœ ์š”์ฒญํ•˜๋Š” ํšŸ์ˆ˜๊ฐ€ ์ค„์–ด ๋ถ€ํ•˜๊ฐ€ ์ค„์–ด๋“ ๋‹ค.

    • ๋ฐ์ดํ„ฐ์˜ ์ง€์—ญ์„ฑ

      • ๊ณต๊ฐ„์ง€์—ญ์„ฑ: ํ•œ๋ฒˆ ์ ‘๊ทผํ•œ ๋ฐ์ดํ„ฐ์˜ ์ธ๊ทผ์— ์ €์žฅ๋˜์–ด์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค์‹œ ์ ‘๊ทผ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.

      • ์‹œ๊ฐ„์ง€์—ญ์„ฑ: ํ•œ๋ฒˆ ์ ‘๊ทผ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ€๊นŒ์šด ์‹œ๊ฐ„๋‚ด ๋‹ค์‹œ ์ ‘๊ทผ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.

  • Caching & Webpack

    • ์›นํŒฉ์ด ๋ฒˆ๋“คํŒŒ์ผ์„ ๋งŒ๋“œ๋Š” ๊ณผ์ •์—์„œ caching์„ ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

      • ๋ชจ๋“ˆ๋“ค์„ ๋ฒˆ๋“คํŒŒ์ผ๋กœ ๋งŒ๋“ค๋ฉด, ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ฒˆ๋“คํŒŒ์ผ์„ ๋ฐ›๊ณ , ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ๋™์ž‘์‹œํ‚ด

      • ์ด๋•Œ, ์ง€๊ธˆ๊นŒ์ง€ ๋งŒ๋“  ์„ค์ •ํŒŒ์ผ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฒˆ๋“คํŒŒ์ผ์„ ๋งŒ๋“ค๊ฒŒ ๋˜๋ฉด ๋ธŒ๋ผ์šฐ์ €์—์„œ๋Š” ๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ ๋ฒˆ๋“คํŒŒ์ผ์„ ํ˜ธ์ถœํ•˜๊ฒŒ ๋œ๋‹ค.

      • ๊ทธ๋Ÿฐ๋ฐ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์บ์‹ฑํ•˜๋Š” ๊ธฐ์ค€์€ url

      • ๋กœ๋“œ๋ฅผ ํ•˜๋Š” ๋ฆฌ์†Œ์Šค์˜ ๋‚ด์šฉ์ด ๊ฐ™์„๊ฒฝ์šฐ, ์บ์‹ฑ์„ ์ด์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „ํŒŒ์ผ์ด ํ˜ธ์ถœ๋œ ๊ฒฐ๊ณผ๋กœ ๋ณด์—ฌ์ง€๊ฒŒ๋จ.

      • ํŒŒ์ผ์„ ์ˆ˜์ •ํ–ˆ์„ ๊ฒฝ์šฐ, ๋งˆ์น˜ ์ˆ˜์ •์ด ์•ˆ๋œ ๊ฒƒ์œผ๋กœ ์ธ์‹ํ•˜๊ฒŒ ๋จ. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด hash๊ฐ’์„ ๋ถ™์—ฌ์ฃผ๋Š” ๊ฒƒ.

      • ํŒŒ์ผ์ด ๋ฒˆ๋“ค๋ง ๋ ๋•Œ์—๋งŒ hash๊ฐ’์„ ๋ณ€๊ฒฝ.

      • ๋ฒˆ๋“ค๋ง ๋˜๊ธฐ ์ „๊นŒ์ง„ ํ•ด์‹œ๊ฐ’์ด ์œ ์ง€๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ฐ™์€ ๋ฒˆํ‹€ ํŒŒ์ผ๋กœ ์บ์‹ฑ์ด ๊ฐ€๋Šฅํ•จ.

      • ์ˆ˜์ •์‚ฌํ•ญ์ด ์žˆ์–ด์„œ ์ˆ˜์ •ํ•œ ๋’ค ๋‹ค์‹œ ๋ฒˆ๋“ค๋งํ•˜๋ฉด ํ•ด์‹œ๊ฐ’์ด ์ˆ˜์ •์ด๋˜๊ณ , ์บ์‹œ๋ฅผ ์ด์šฉํ•˜์ง€ ์•Š๊ณ  ์ƒˆ๋กœ์šด ๋ฒˆ๋“คํŒŒ์ผ์„ ๋กœ๋“œํ•˜๋ฉด๋จ

    • ํ•ด์‹œ๊ฐ’: hash, contenthash, chunkhash

      • output์˜ filname์— ์ž‘์„ฑ

      • hash: ํŒŒ์ผ์ด๋ณ€๊ฒฝ๋˜์—ˆ์„๋•Œ, ๋นŒ๋“œ๋ ๋•Œ๋งˆ๋‹ค ์ž๋™์œผ๋กœ ๋ถ€์—ฌ๋˜๋Š” ๊ฐ’.

        • ๊ทธ๋Ÿฐ๋ฐ ๋นŒ๋“œ ๋ ๋•Œ๋งˆ๋‹ค hash๊ฐ€ ์ƒˆ๋กœ ๋ถ€์—ฌ๋˜๋ฉด, ํŒŒ์ผ๋‚ด๋ถ€์— bundleํŒŒ์ผ์ด ์Œ“์—ฌ๊ฐ.

          (๋ถˆํ•„์š”ํ•œ ํŒŒ์ผ์ด ์Œ“์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ด๋ฅผ ํ•ด๊ฒฐํ•ด์ฃผ๋Š” plugin์„ ๋“ฑ๋ก)

        • clean webpack plugin: ๋นŒ๋“œ ๋ ๋•Œ๋งˆ๋‹ค, ์ƒˆ๋กœ ์ƒ์„ฑ๋œ ํŒŒ์ผ๋“ค๋งŒ ๋‚จ๊ธฐ๊ณ  ๋‚˜๋จธ์ง€๋Š” ๋น„์›Œ์ฃผ๊ฒŒ๋จ

          npm install clean-webpack-plugin -D
        • ์™ธ๋ถ€ ๋ชจ๋“ˆ์ด๊ธฐ๋•Œ๋ฌธ์—, require๋กœ ๋ชจ๋“ˆ์„ ๋ถ€๋ฅด๊ณ , plugin์— ์„ค์ •ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค.

          const { CleanWebpackPlugin } = require('clean-webpack-plugin');
          plugin: [new CleanWebpackPlugin()];
      • contenthash

        • ExtractTextPlugin์—์„œ ์ƒ์„ฑ๋œ ํŠน์ •์œ ํ˜•์˜ ํ•ด์‹œ

        • mini-css-extract-plugin ๋ชจ๋“ˆ ์„ค์น˜

          npm i mini-css-extract-plugin
          • require๋กœ mini-css-extract-plugin์„ ๊ฐ€์ ธ์™€์„œ, loader, plugin์„ค์ •์„ ํ•ด์ค€๋‹ค.

          • ์ผ์ „์— style-loader ์„ค์ •ํ•ด๋‘์—ˆ๋˜ ๊ฒƒ์€ ์ฃผ์„์ฒ˜๋ฆฌ (์ถฉ๋Œ ๋ฐฉ์ง€)

          • link ํƒœ๊ทธ ์ถ”๊ฐ€๋œ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๊ณ , build(bundle)๋œ ๊ฒฐ๊ณผ, main.css ํŒŒ์ผ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

          • css ์ž์›์€ ์บ์‹ฑ์ด ๋˜์–ด ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ˜•ํƒœ๊ฐ€๋˜๊ณ , html์€ ํฌ๊ธฐ๊ฐ€ ์ค„์–ด๋“ ๋‹ค.(style tag๋Œ€์‹ , ๋ณ„๋„ ํŒŒ์ผ css๋กœ ๋ณ€๊ฒฝ๋จ.)

          • ๋‹จ, main.css๋กœ ์ด๋ฆ„์ด ๊ณ ์ •๋˜๋ฉด, cssํŒŒ์ผ์ด ๋ณ€๊ฒฝ์ด๋˜์–ด๋„ ์ด์ „ ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์—, hash๋ฅผ ์ ์šฉํ•ด์•ผํ•จ

          • ์ด ๋•Œ hash๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•จ.

            new MiniCssExtractPlugin({
              filename: '[hash].css', //hash, createhash, chunkhash
            });
          • ๊ทธ๋Ÿฐ๋ฐ, js์™€ css๋ฅผ ์ˆ˜์ •ํ•˜๋Š” ์‹œ์ ์€ ๋‹ค๋ฆ„.

          • js๊ฐ€ ์ˆ˜์ •๋˜๊ณ  ๋‹ค์‹œ ๋นŒ๋“œ๋ฅผ ํ•˜๋ฉด, css์˜ ๋ณ€๊ฒฝ๋‚ด์šฉ์ด ์—†๋”๋ผ๋„ ๋งค๋ฒˆ css๋„ ์ƒˆ๋กœ ๋นŒ๋“œ๋จ.

          • hash๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํŒŒ์ผ์ด ์ˆ˜์ •๋œ ํ›„์— ๋นŒ๋“œ๊ฐ€ ์‹คํ–‰๋จ์— ๋”ฐ๋ผ ๋ณ€ํ™”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ ‡๊ฒŒ ๋˜๋ฉด css๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

            • ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜์ง€ ์•Š์€ ๋ฆฌ์†Œ์Šค๋Š”(css) ์บ์‹ฑ์— ์žˆ๋Š” ๋ฆฌ์†Œ์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผํ•˜๋Š”๋ฐ, ํ•ด์‹œ๊ฐ€ ์ผ๊ด„ ๋ณ€๊ฒฝ๋จ์— ๋”ฐ๋ผ, ๋ถˆ๋Ÿฌ์˜ค์ง€ ๋ชปํ•˜๋Š” ์ƒํ™ฉ๋ฐœ์ƒ

            • ์ œ๋Œ€๋กœ ์บ์‹ฑ ์•ˆ๋จ

            • ํ•ด์‹œ๊ฐ’์ด ๋ฐ”๋€Œ์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, css๋ฅผ ์ƒˆ๋กœ์šด ๋ฆฌ์†Œ์Šค๋กœ ํŒ๋‹จํ•˜๊ณ  ๊ฐ™์€ ๋‚ด์šฉ์„ ์š”์ฒญํ•˜๊ฒŒ ๋˜์–ด content ์ข…๋ฅ˜์— ๋”ฐ๋ผ hash๋ฅผ ๋ถ€์—ฌํ•˜๋Š” contenthash๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

            • js๊ฐ€ ๋ณ€๊ฒฝ๋˜๋”๋ผ๋„, css๋Š” ์œ ์ง€ํ•˜๋„๋ก ํ•จ.

      • chunkhash

        • ๋ฒˆ๋“ค๋ง์„ ํ•  ๋•Œ๋งˆ๋‹ค, ๋ฒˆ๋“คํŒŒ์ผ์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ ๋Š˜์–ด๋‚œ๋‹ค.

        • ํŒŒ์ผ์˜ ์š”์ฒญ์ˆ˜๋Š” ์ค„์ง€๋งŒ, ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ ์ปค์ ธ ์ƒ๋Œ€์ ์œผ๋กœ ํŒŒ์ผ์ด ๋„์ฐฉํ•˜๋Š” ์‹œ๊ฐ„์ด ์ง€์—ฐ๋  ์ˆ˜ ์žˆ๋‹ค.

        • ๊ทธ๋ž˜์„œ ๋ช‡๊ฐ€์ง€ ๊ธฐ์ค€์„ ๊ฐ€์ง€๊ณ  ํŒŒ์ผ์„ ๋ถ„๋ฆฌํ•˜๋Š”๋ฐ, ์ด๋ฅผ 'chunk'๋ผ๊ณ  ํ•œ๋‹ค.

        • ํŠน์ • ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆ„๋Š”๋ฐ 2๊ฐ€์ง€๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆŒ ๊ฒƒ

          • runtime ์ฒญํฌํŒŒ์ผ

            • ์›นํŒฉ์ด ๋ชจ๋“ˆ๋“ค์„ ํ•ด์„ํ•ด ์˜์กด์„ฑ๊ทธ๋ž˜ํ”„๋ฅผ ์™„์„ฑํ•˜๊ณ  ํ•˜๋‚˜์˜ ๋ฒˆ๋“คํŒŒ์ผ์— ๋ชจ๋“ˆ๋“ค์„ ๋ชจ๋‘ ๋ชจ์•„์„œ ๋ฒˆ๋“คํŒŒ์ผ์„ ์™„์„ฑํ•˜๊ฒŒ ๋˜๋Š”๋ฐ,

              ๋ฒˆ๋“คํŒŒ์ผ๋กœ app์„ ์‹คํ–‰์‹œํ‚ฌ๋•Œ ๋ชจ๋“ˆ๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ์ฝ์„ ์ˆ˜ ์žˆ๋„๋ก ๋งˆ๋ จ๋œ ์ดˆ๊ธฐํ™”์— ํ•ด๋‹นํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์žˆ๋‹ค.

            • runtime: application ์ด ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํ• ๋‹น๋ฐ›๊ณ , ์‹คํ–‰๋˜๋Š” ํ™˜๊ฒฝ

            • ์ด ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์—์„œ ๋ชจ๋“ˆ๋“ค์„ ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งˆ๋ จ๋œ ์ดˆ๊ธฐํ™” ์ฝ”๋“œ๋Š” ๋ชจ๋“ˆ์ด ๋ช‡๊ฐœ๊ฐ€ ๊ด€์—ฌ๋˜๋˜ ๋ณ€ํ•จ์ด ์—†์Œ.

            • ๋Ÿฐํƒ€์ž„๋•Œ๋งŒ ์‚ฌ์šฉ๋˜๋Š” ์ฝ”๋“œ๋“ค์„ ์ฒญํฌ๋กœ ๋ถ„๋ฅ˜ํ•˜๊ฒŒ ๋˜๋ฉด, ๋‚˜๋จธ์ง€๋Š” ๋ชจ๋“ˆ์— ๋Œ€ํ•œ ๋‚ด์šฉ๋งŒ ๋‚จ๊ฒŒ ๋œ๋‹ค.

            • ์‹ค์ œ๋กœ ๋ณ€ํ™”๋งŒ ๋‹ด๊ณ  ์žˆ๋Š” ์ฝ”๋“œ๋Š” ์–‘์ด ์ƒ๋Œ€์ ์œผ๋กœ ์ค„๊ณ , ๋Ÿฐํƒ€์ž„ ์ฝ”๋“œ๋Š” ๋ณ€ํ™”๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋Ÿฐํƒ€์ž„์ฝ”๋“œ์˜ ๊ฒฝ์šฐ ์บ์‹œ๊ฐ€ ์ ์šฉ๋˜์„œ app์ด ์ข€ ๋” ๋นจ๋ฆฌ ์‹คํ–‰๋จ.

          • ๋ฐด๋” ์ฒญํฌ ํŒŒ์ผ

            • ๋ฒค๋”: ์™ธ๋ถ€ ํŒจํ‚ค์ง€์— ํ•ด๋‹นํ•˜๋Š” ๋ชจ๋“ˆ๋“ค (์˜ˆ:jQuery)

              • jQuery๋Š” ์šฐ๋ฆฌ๊ฐ€ ๋ฒ„์ „์—…์„ ํ•˜์ง€ ์•Š๋Š”์ด์ƒ, jQuery๋Š” ๋ฒ„์ „์˜ ๋ณ€ํ™”๊ฐ€ ์—†๋‹ค.

              • ์™ธ๋ถ€์—์„œ ๊ด€๋ฆฌ๋˜๋Š” ๋ชจ๋“ˆ๋“ค๋งŒ ๋”ฐ๋กœ ๋ถ„๋ฅ˜ํ•˜๋ฉด, ์‹ค์ œ ์šฐ๋ฆฌ๊ฐ€ ์ž‘์—…ํ•˜๋Š” ์ฝ”๋“œ๋งŒ ์‘์ง‘์ด ๋˜๊ณ , ์™ธ๋ถ€ํŒจํ‚ค์ง€๋“ค์„ ๋ชจ์•„๋‘” ๋ฒค๋” ์ฒญํฌ ํŒŒ์ผ์€ ํ•ด์‹œ๊ฐ’์ด ๋ฐ”๋€Œ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์บ์‹œ๋ฅผ ํ†ตํ•ด ํšจ์œจ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

        • chunk hash ๋Š” chunk๋กœ ๋‚˜๋ˆ„์–ด์ง„ ํŒŒ์ผ๋“ค๋งˆ๋‹ค hash๊ฐ’์„ ๋ถ€์—ฌํ•˜๊ฒŒ ๋จ

        • ๋งˆ์น˜ content hash์ฒ˜๋Ÿผ ๋‚˜๋ˆ„์–ด์ง„ ์ฒญํฌ ๋ณ„๋กœ ํ•ด์‹œ๊ฐ’์„ ์ ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ง์ ‘ ์ž‘์„ฑํ•˜๋Š” ๋ชจ๋“ˆ์„ ์ œ์™ธํ•œ ๋‚˜๋จธ์ง€ ์ฒญํฌํŒŒ์ผ์—๋Š” ์˜ํ–ฅ์ด ์—†๋‹ค.

        • chunkhash ์‹ค์Šต

          • runtime chunk

            • file name ์„ค์ •

              output:{
                //name์ด๋ผ๋Š” ํ‚ค์›Œ๋“œ๋Š” entry ํŒŒ์ผ ์ด๋ฆ„(์˜ˆbundle) ํ˜น์€
                //์›นํŒฉ ์„ค์ • ํŒŒ์ผ ๋‚ด์—์„œ name ํ”„๋กœํผํ‹ฐ์— ํ• ๋‹นํ•˜๋Š” ๊ฐ’์ด ์ ์šฉ๋˜๋Š” ๊ณต๊ฐ„
                filename: '[name].[chunkhash].js',
              }
            • optimization (key): ์›นํŒฉ์˜ ๋ฒˆ๋“คํŒŒ์ผ์„ ์ตœ์ ํ™” ์‹œํ‚ด

              • runtimeChunk ๋ฅผ plugin์— ์ถ”๊ฐ€ : ๋นŒ๋“œ ์‹œ, ๋Ÿฐํƒ€์ž„ ์ฝ”๋“œ๋Š” ๋”ฐ๋กœ ๋ถ„๋ฆฌ๋จ(runtime, )

                optimization:{
                runtimeChunk:{
                    name:'runtime'
                }
                },
          • ๋ฒค๋” chunk

            • ๋ฒค๋”ํŒŒ์ผ ์˜ˆ์‹œ(jQuery)

            • jQuery ์„ค์น˜

              npm i -S jquery
            • ์„ค์น˜ ์ดํ›„, ํด๋ž˜์Šค์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ DOM ๊ฐฏ์ˆ˜ ๋ช‡๊ฐœ์ธ์ง€ ์ฒดํฌ(index.js)

              import $ from 'jquery';
              console.log($(`.${styles.helloWebpack}`).length);
            • ์›นํŒฉ ์„ค์ • ํŒŒ์ผ์—์„œ, ๋ฒค๋”ํŒŒ์ผ๋“ค์— ๋Œ€ํ•œ ์ฒญํฌํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด key๋ฅผ ํ•˜๋‚˜ ๋” ์ถ”๊ฐ€.(webpack.config.js)

              • splitchunk ๋‚ด์šฉ์„ plugin์— ์ถ”๊ฐ€

                splitChunks:{
                cacheGroups:{
                      commons:{
                          test: /[\\/]node_modules[\\/]/,
                          name: 'venders',
                          chunks: 'all'
                    }
                }
                }
              • build์‹œ, dist ํด๋” ๋‚ด๋ถ€์— vender.~ ์ด๋ผ๋Š” ํŒŒ์ผ์ด ์ƒ๊น€ ํ™•์ธํ•ด๋ณด๋ฉด, jQuery์™€ ๊ด€๋ จ๋œ ๋‚ด์šฉ์ด ๋‹ด๊ฒจ์žˆ์Œ(๋ถ„๋ฆฌ ์„ฑ๊ณต!)

Last updated