๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
React-Native

React Native Lazy Loading์œผ๋กœ ์•ฑ ์‹œ์ž‘ ์†๋„ ๊ฐœ์„ ํ•˜๊ธฐ

by LasBe 2025. 5. 19.
๋ฐ˜์‘ํ˜•

๐Ÿ“’ React Native Lazy Loading์œผ๋กœ ์•ฑ ์‹œ์ž‘ ์†๋„ ๊ฐœ์„ ํ•˜๊ธฐ


์ด๋ฒˆ์— ํšŒ์‚ฌ์—์„œ ์•ฑ ์„ฑ๋Šฅ ๊ฐœ์„  ์ž‘์—… ์—…๋ฌด๋ฅผ ํ•˜๋ฉฐ ์‹œ์ž‘ ์†๋„ ๊ฐœ์„ ์„ ์œ„ํ•ด Lazy Loading์„ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ ๊ณผ์ •์—์„œ ์•ฑ ์‹œ์ž‘ ์†๋„๋ฅผ 2~3๋ฐฐ ๊ฐœ์„ ํ•˜๋Š” ์„ฑ๊ณผ๋„ ์žˆ์—ˆ๊ณ , ์ด๊ฑธ ์ธก์ •ํ•˜๊ณ  ๋ถ„์„ํ•˜๋А๋ผ RN ๊ตฌ๋™ ๋ฐฉ์‹์— ๋Œ€ํ•ด์„œ๋„ ๊นŠ๊ฒŒ ํŒŒ์•…ํ•˜๋ฉฐ ์ด๋ฆฌ์ €๋ฆฌ ๊ณต๋ถ€๊ฐ€ ๋งŽ์ด ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿผ react native์—์„œ์˜ Lazy Loading๊ณผ ์ ์šฉ์„ ํ†ตํ•œ ์†๋„ ๊ฐœ์„ , ์ธก์ • ๋ฐฉ์‹๊นŒ์ง€ ์†Œ๊ฐœ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

๐Ÿ“Œ React Native ์•ฑ์ด ์‹คํ–‰๋  ๋•Œ

React Native๋กœ ๋นŒ๋“œํ•œ ์•ฑ์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‚ด๋ถ€์— ๋‹จ์ผ ๋ฒˆ๋“ค ํŒŒ์ผ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.
์ด ๋ฒˆ๋“ค ํŒŒ์ผ์€ ์•ฑ์„ ์‹คํ–‰ํ•  ๋•Œ entry point์ธ index.js์—์„œ๋ถ€ํ„ฐ ๋ชจ๋“  import๋ฅผ ํƒ€๊ณ  ๋“ค์–ด๊ฐ€ ์ „์ฒด JS ์ฝ”๋“œ๋ฅผ ํ‰๊ฐ€ํ•˜๊ธฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ ‡๊ฒŒ ์ฝ”๋“œ ํ‰๊ฐ€๊ฐ€ ๋๋‚ฌ๋‹ค๋ฉด ๊ทธ์ œ์•ผ ๋ฉˆ์ถฐ์žˆ๋˜ ํ™”๋ฉด์ด ํ’€๋ฆฌ๋ฉด์„œ ์ฒซ ๋ Œ๋”๋ง์ด ์‹œ์ž‘๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ ์•ฑ ์‹œ์ž‘ ์†๋„๋ฅผ ์˜ฌ๋ฆฌ๋Š” ๋ฐฉ๋ฒ•

์ด ๋ฒˆ๋“ค ์ฝ”๋“œ๋ฅผ ํ‰๊ฐ€ํ•˜๋А๋ผ ์•ฑ ์‹œ์ž‘ ์‹œ๊ฐ„์ด ์ง€์—ฐ๋œ๋‹ค๋Š” ๊ฒƒ์€ ์•Œ์•˜๊ณ , ๊ทธ๋Ÿผ ๋ฒˆ๋“ค ์ฝ”๋“œ ํ‰๊ฐ€ ์‹œ๊ฐ„์— ์˜ํ–ฅ์„ ์ฃผ๋Š” ์š”์†Œ๋Š” ๋ฌด์—‡์ผ๊นŒ์š”?
๋‹น์—ฐํ•˜๊ฒ ์ง€๋งŒ ๋ฐ”๋กœ ๋ฒˆ๋“ค์˜ ์‚ฌ์ด์ฆˆ์ž…๋‹ˆ๋‹ค.
 
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‰๊ฐ€์™€ ์‹คํ–‰ ๊ด€์ ์œผ๋กœ ๋ณธ๋‹ค๋ฉด ๋ฒˆ๋“ค ๋กœ๋“œ๋Š” ํ‰๊ฐ€ ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค.
๋ณต์žกํ•œ ์—ฐ์‚ฐ ๊ฐ™์€ ๊ฒƒ๋“ค์€ ์‹คํ–‰ ๋‹จ๊ณ„์— ํฌํ•จ์ด ๋˜๋‹ˆ๊น ์•ฑ ์‹œ์ž‘ ์‹œ๊ฐ„์— ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ณ , ๊ทธ์ € ๋งŽ์€ JS ์ฝ”๋“œ๋Ÿ‰๊ณผ ๋ฒˆ๋“ค ์šฉ๋Ÿ‰์ด ํ‰๊ฐ€ ๋‹จ๊ณ„์— ์˜ํ–ฅ์„ ์ค˜ ์‹œ์ž‘ ์‹œ๊ฐ„์„ ๋Š˜๋ฆฌ๋Š” ์š”์†Œ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
 
๊ทธ๋Ÿผ ์•ฑ ์‹œ์ž‘ ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•˜๋ ค๋ฉด ๋ฒˆ๋“ค ์‚ฌ์ด์ฆˆ๋ฅผ ์ค„์ด๊ฑฐ๋‚˜ ํ‰๊ฐ€ํ•  ์ฝ”๋“œ๋ฅผ ์ค„์ด๋ฉด ๋˜๊ฒ ์ฃ ?
 
ํ•˜์ง€๋งŒ ๋ฒˆ๋“ค ์‚ฌ์ด์ฆˆ๋ฅผ ํ™•์‹คํ•˜๊ฒŒ ์ค„์ด๋Š” ๊ฑด ๋„ˆ๋ฌด ์–ด๋ ค์šด ์ผ์ž…๋‹ˆ๋‹ค.
์• ์ดˆ์— Metro ๋ฒˆ๋“ค๋Ÿฌ๋Š” Tree Shaking์„ ์ง€์›ํ•˜์ง€ ์•Š๊ธฐ๋„ ํ•˜๊ณ , ํŒ€์›์ด๋‚˜ ๋ณธ์ธ์ด ์ž‘์„ฑํ•œ ๋ถˆํ•„์š”ํ•œ ์ฝ”๋“œ๋ฅผ ์ค„์ด๋Š” ๊ฑด ๋ฒˆ๋“ค ์‚ฌ์ด์ฆˆ์— ํ‹ฐ๋„ ์•ˆ ๋‚ฉ๋‹ˆ๋‹ค. ๊ฒฐ๊ตญ ์šฉ๋Ÿ‰์ด ํฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ •๋ฆฌํ•˜๋Š” ๊ฒŒ ๊ฐ€์žฅ ํ™•์‹คํ•œ ๋ฐฉ๋ฒ•์ธ๋ฐ, ์ด๊ฑด ๋˜ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ํ•ด์•ผ ํ•˜๋Š” ๋ฆฌ์†Œ์Šค๊ฐ€ ํ•„์š”ํ•ด์„œ ์‰ฝ์ง€ ์•Š์ฃ .
 
๊ฒฐ๊ตญ ์ฝ”๋“œ ํ‰๊ฐ€๋งŒ ๋‚จ๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ, ์ด๊ฑด ๋น„๊ต์  ์‰ฝ์Šต๋‹ˆ๋‹ค.
๋ฐ”๋กœ Lazy Loading์„ ํ†ตํ•ด์„œ์š”.

๐Ÿ“Œ React Native์˜ Lazy Loading

const LazyComponent = React.lazy(() => import("../Component"))

React์—์„œ๋Š” ์œ„์™€ ๊ฐ™์ด React.lazy๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ ์ฝ”๋“œ์˜ ๋กœ๋“œ๋ฅผ ๋ Œ๋” ์ „๊นŒ์ง€ ์ง€์—ฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์ด๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์‹คํ–‰ ์‹œ์ ๊นŒ์ง€ ์ฝ”๋“œ ํ‰๊ฐ€๋ฅผ ์ง€์—ฐ์‹œ์ผœ ์ดˆ๊ธฐ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์„ ์ค„์ด๊ฒŒ ๋˜์–ด์„œ "์•ฑ ์‹œ์ž‘ ํ›„ ์ฒซ ์ฝ˜ํ…์ธ  ๋ Œ๋”๋ง ์‹œ์ž‘ ์‹œ๊ฐ„"์ธ "First Contentful Paint(FCP)"์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
 
๊ทธ๋Ÿฐ๋ฐ ๊ฐ™์€ React์ง€๋งŒ ์›น์—์„œ ์‚ฌ์šฉํ•  ๋•Œ์™€ RN์„ ํ†ตํ•ด ์•ฑ์—์„œ ์‚ฌ์šฉํ•  ๋•Œ์˜ ๋ช‡๊ฐ€์ง€ ์ฐจ์ด์ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

  • React Web (Webpack, Vite)
    • lazy๊ฐ€ ์ ์šฉ๋œ ์ฝ”๋“œ๋Š” ๋ฒˆ๋“ค๋Ÿฌ๊ฐ€ ๋ฒˆ๋“ค์„ ๋ณ„๋„์˜ ์ฒญํฌ๋กœ ๋ถ„๋ฆฌํ•ด์ค๋‹ˆ๋‹ค.
    • ์ฝ”๋“œ์˜ ์‹คํ–‰ ์‹œ์ ์— ๋„คํŠธ์›Œํฌ ์š”์ฒญ์„ ํ†ตํ•ด ์ฒญํฌ๋ฅผ ๋ถˆ๋Ÿฌ์˜ต๋‹ˆ๋‹ค.
    • ๋ฒˆ๋“ค์ด ์—ฌ๋Ÿฌ ๊ฐœ๋กœ ์ชผ๊ฐœ์ง€๊ณ  ๋ฒˆ๋“ค ์‚ฌ์ด์ฆˆ์— ์ฐจ์ด๊ฐ€ ์ƒ๊น๋‹ˆ๋‹ค.
  • React Native (Metro)
    • lazy๊ฐ€ ์ ์šฉ๋˜์–ด๋„ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•˜๋‚˜์˜ JS ๋ฒˆ๋“ค ํŒŒ์ผ๋กœ ๋ฒˆ๋“ค๋ง ๋ฉ๋‹ˆ๋‹ค.
    • ์‹คํ–‰์‹œ์ ์— ์ฝ”๋“œ๋ฅผ ๋ฒˆ๋“ค์—์„œ ๋ถˆ๋Ÿฌ์™€ ํ‰๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
    • ๋‹จ์ผ ๋ฒˆ๋“ค์ด๋ฉฐ ๋ฒˆ๋“ค ์‚ฌ์ด์ฆˆ์— ์ฐจ์ด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉํ•˜๊ธฐ์— ํฌ๊ฒŒ ์–ด๋ ต์ง€๋„ ์•Š์œผ๋‹ˆ ๋ฐ”๋กœ ์ ์šฉ ์ „๊ณผ ํ›„์˜ ์ฐจ์ด๋ฅผ ํ™•์ธํ•ด ๋ณด์‹œ์ฃ .

๐Ÿ“Œ Lazy Loading ์ „ - ํ›„ ์ฐจ์ด ์ธก์ •ํ•˜๊ธฐ

 

GitHub - devlasbe/rn-lazy-loading: React Native์—์„œ Lazy Loading์„ ํ†ตํ•ด ์•ฑ ์‹œ์ž‘ ์†๋„๋ฅผ ์ธก์ •

React Native์—์„œ Lazy Loading์„ ํ†ตํ•ด ์•ฑ ์‹œ์ž‘ ์†๋„๋ฅผ ์ธก์ •. Contribute to devlasbe/rn-lazy-loading development by creating an account on GitHub.

github.com

 

 

react-native-performance๋กœ ์•ฑ ์‹œ์ž‘ ์‹œ๊ฐ„ ์ธก์ •ํ•˜๊ธฐ

๐Ÿ“’ react-native-performance๋กœ ์•ฑ ์‹œ์ž‘ ์‹œ๊ฐ„ ์ธก์ •ํ•˜๊ธฐ์ด๋ฒˆ์— ํšŒ์‚ฌ์—์„œ ์•ฑ ์„ฑ๋Šฅ ๊ฐœ์„  ์—…๋ฌด๋ฅผ ๋งก์•„ ์ •๋ง ์—ด์‹ฌํžˆ ํ–ˆ์Šต๋‹ˆ๋‹ค.๊ทธ ๊ณผ์ •์—์„œ ์•ฑ ์‹œ์ž‘ ์†๋„๋„ ์ •๋ง ํฌ๊ฒŒ ๊ฐœ์„ ๋˜์—ˆ๋Š”๋ฐ, ์ˆ˜์น˜๋กœ ๋ณด์—ฌ์ฃผ์ง€ ์•Š์œผ๋ฉด

lasbe.tistory.com

์ „์ฒด ์˜ˆ์ œ ์ฝ”๋“œ์™€ ์‹œ๊ฐ„ ์ธก์ • ๋ฐฉ๋ฒ•์€ ์œ„ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”.
 
๊ทธ๋Ÿผ Lazy Loading์„ ์ ์šฉํ–ˆ์„ ๋•Œ ์–ผ๋งˆ๋‚˜ ์•ฑ ์‹œ์ž‘ ์‹œ๊ฐ„์— ์ฐจ์ด๊ฐ€ ๋ฐœ์ƒํ•˜๋Š”์ง€ ์˜ˆ์ œ๋กœ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๐Ÿ”Ž ๋ฌด๊ฑฐ์šด ์ฝ”๋“œ ๋งŒ๋“ค๊ธฐ

Lazy Loading์˜ ํšจ๊ณผ๋ฅผ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์šฐ์„  ์ •๋ง ๋ฌด๊ฑฐ์šด ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ ์ €๋Š” 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
 
1. ๋ฌด์ž‘์ • ์ฝ”๋“œ ์–‘ ๋Š˜๋ฆฌ๊ธฐ

const NestedNavigation = () => {
  return (
    <NestedStack.Navigator>
      <NestedStack.Screen name="HeavyPage1" component={HeavyPage1} />
      <NestedStack.Screen name="HeavyPage2" component={HeavyPage2} />
      <NestedStack.Screen name="HeavyPage3" component={HeavyPage3} />
      <NestedStack.Screen name="HeavyPage4" component={HeavyPage4} />
      <NestedStack.Screen name="HeavyPage5" component={HeavyPage5} />
    </NestedStack.Navigator>
  );
};

export default NestedNavigation;
 

๊ทธ๋ƒฅ ์–‘๋งŒ ๋Š˜๋ฆฌ๊ธฐ ์œ„ํ•ด Text ์ปดํฌ๋„ŒํŠธ๋ฅผ 1000๊ฐœ๊ฐ€๋Ÿ‰ ๋•Œ๋ ค ๋ฐ•์€ ํŽ˜์ด์ง€๋ฅผ 5๊ฐœ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ 1000๊ฐœ ์ •๋„๋กœ๋Š” ์šฉ๋Ÿ‰์—๋Š” ํฌ๊ฒŒ ์ฐจ์ด๊ฐ€ ์—†์—ˆ๊ณ , ๋ฌด์ž‘์ • ์–‘๋งŒ ๋Š˜๋ ธ๋‹ค๊ฐ€ ํŒŒ์ผ์„ ์ž˜๋ชป ์—ด์—ˆ์„ ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ์œผ๋กœ IDE๊ฐ€ ํ„ฐ์ ธ๋ฒ„๋ ค ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.
 
2. ๋ฌด๊ฑฐ์šด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์„ค์น˜ํ•˜๊ธฐ

$ yarn add @faker-js/faker lodash mathjs moment ramda

์šฉ๋Ÿ‰์ด ํฌ๊ธฐ๋กœ ์œ ๋ช…ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‹น ๋‹ค ์„ค์น˜ํ•ด ์ค€ ๋’ค.
 

import React from 'react';
import { Text, ScrollView } from 'react-native';
// @ts-ignore
import _ from 'lodash';
// @ts-ignore
import * as Ramda from 'ramda';
import moment from 'moment';
import * as MathJs from 'mathjs';
import * as fakeJs from '@faker-js/faker';

console.log(_);
console.log(moment);
console.log(Ramda);
console.log(MathJs);
console.log(fakeJs);

const ImportHeavyPackagePage = () => {
  return (
    <ScrollView>
      <Text>ImportHeavyPackagePage</Text>
    </ScrollView>
  );
};

export default ImportHeavyPackagePage;

๋ƒ…๋‹ค ์ „์ฒด ์ฝ”๋“œ๋ฅผ import ํ•ด๋ฒ„๋ฆฌ๋Š” ๋ฐฉ๋ฒ•์„ ์„ ํƒํ–ˆ๊ณ , ๋ฒˆ๋“ค ์šฉ๋Ÿ‰์„ ํš๊ธฐ์ ์œผ๋กœ ๋Š˜๋ฆฌ๋Š” ๋ฐ ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.
 

react-native-bundle-visualizer๋ฅผ ํ™•์ธํ•ด ๋ณด๋‹ˆ ๋ฒˆ๋“ค์˜ ์šฉ๋Ÿ‰๊ณผ ์ƒํƒœ๋Š” ์œ„์™€ ๊ฐ™์•˜์Šต๋‹ˆ๋‹ค.
์šฉ๋Ÿ‰์€ 7mb๋กœ ์‹ค์ œ ํ”„๋กœ๋•ํŠธ ์•ฑ ๋ฒˆ๋“ค๊ณผ๋Š” ํ•œ์ฐธ ์ฐจ์ด๋‚˜์ง€๋งŒ, ์ด ์ •๋„๋งŒ ๋˜์–ด๋„ ์‹คํ—˜ํ•˜๋Š” ๋ฐ๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๐Ÿ”Ž ์ ์šฉ ์ „ - ํ›„ ์‹œ๊ฐ„ ์ธก์ •ํ•˜๊ธฐ

import { createStackNavigator } from '@react-navigation/stack';
import Home from '../pages/Home';
import { NavigationContainer } from '@react-navigation/native';
import React from 'react';
import { PerformanceMeasureView } from '@shopify/react-native-performance';
// import NestedNavigation from './NestedNavigation';

const NestedNavigation = React.lazy(() => import('./NestedNavigation'));

const RootStack = createStackNavigator();

const PerformanceHomeScreen = () => {
  return (
    <PerformanceMeasureView screenName="Home" interactive={true}>
      <Home />
    </PerformanceMeasureView>
  );
};

const RootNavigation = () => {
  return (
    <NavigationContainer>
      <RootStack.Navigator initialRouteName="Home">
        <RootStack.Screen name="Home" component={PerformanceHomeScreen} />
        <RootStack.Screen name="Nested" component={NestedNavigation} />
      </RootStack.Navigator>
    </NavigationContainer>
  );
};

export default RootNavigation;

๋ฌด๊ฑฐ์šด ์ปดํฌ๋„ŒํŠธ๋“ค์„ ๋ชจ์•„๋†“์€ Navigation์„ Lazy Loading ํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ธก์ •ํ–ˆ์œผ๋ฉฐ, ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.
 

  • Lazy Loading ๋ฏธ์ ์šฉ

  • Lazy Loading ์ ์šฉ

 
ํ•ธ๋“œํฐ์ด ์•ฑ ์‹คํ–‰ ์‹œ ๋ฒˆ๋“ค์„ ํ‰๊ฐ€ํ•˜๋Š” ์‹œ๊ฐ„์€ JS Boot Time์ž…๋‹ˆ๋‹ค.
release ๋ชจ๋“œ๋กœ ๋นŒ๋“œํ•œ apk ํŒŒ์ผ์„ ์•ˆ๋“œ๋กœ์ด๋“œ ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ์— ์ง์ ‘ ์„ค์น˜ํ•ด ๊ฐ๊ฐ 3ํšŒ์”ฉ ์‹œ๊ฐ„์„ ์ธก์ •ํ–ˆ์œผ๋ฉฐ, ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  ๋ฏธ์ ์šฉ ์ ์šฉ
1ํšŒ์ฐจ 578ms 123ms
2ํšŒ์ž 501ms 88ms
3ํšŒ์ฐจ 540ms 84ms

๊ฐ„๋‹จํ•œ ์‹คํ—˜์ธ๋ฐ๋„ ์—„์ฒญ๋‚œ ์ฐจ์ด๊ฐ€ ๋А๊ปด์ง‘๋‹ˆ๋‹ค.
์ด๋ฒˆ์— ์—…๋ฌด๋กœ ํ”„๋กœ๋•ํŠธ ์•ฑ ๋กœ๋“œ ์‹œ๊ฐ„์„ ์•ฝ 5์ดˆ์—์„œ 1.5์ดˆ๋กœ ์ค„์˜€์œผ๋‹ˆ ๋ฒˆ๋“ค ์‚ฌ์ด์ฆˆ๊ฐ€ ํฌ๋ฉด ํด์ˆ˜๋ก, ํ•ธ๋“œํฐ ์‚ฌ์–‘์ด ๋‚ฎ์œผ๋ฉด ๋‚ฎ์„์ˆ˜๋ก ์ ์šฉ ์ „ ํ›„์˜ ์ฐจ์ด๊ฐ€ ํ™•์—ฐํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๐Ÿ“Œ ์ฃผ์˜ํ•  ์ 

๊ทธ๋ ‡์ง€๋งŒ ๋กœ๋“œ ์‹œ๊ฐ„์ด ์ค„์–ด๋“ ๋‹ค๊ณ  ๋ฌด์ž‘์ • ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๋“ค์„ Lazy Loading ํ•  ์ˆœ ์—†์Šต๋‹ˆ๋‹ค.
์™œ๋ƒํ•˜๋ฉด ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ์ฝ”๋“œ๋“ค์€ ์–ด์ฐจํ”ผ ์‹คํ–‰ ์‹œ์ ์— ๋กœ๋“œ๋˜๊ธฐ์—, ํ™”๋ฉด ์ด๋™ํ•  ๋•Œ๋งˆ๋‹ค ๋กœ๋”ฉ ํ™”๋ฉด์„ ๋ณด์—ฌ์ฃผ๋ฉด ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ถˆํŽธํ•จ์„ ์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
๊ทธ๋ ‡๊ธฐ์— ์ „๋žต์ ์œผ๋กœ 1ํšŒ์„ฑ ํ™”๋ฉด์ด๋‚˜ ์‚ฌ์šฉ ๋นˆ๋„๊ฐ€ ๋‚ฎ์€ ํŽ˜์ด์ง€๋“ค์„ ์ค‘์ ์œผ๋กœ ์ ์šฉํ•˜๋ฉฐ ์ ์ง„์ ์œผ๋กœ ์‚ฌ์šฉํ•ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€


์˜คํ”ˆ ์ฑ„ํŒ