Update : Main Page Lazy Loading& Code Splitting & Memo 적용
Closed this issue · 2 comments
cmun2 commented
이런 기능
기존 코드의 lighthouse performance 개선을 위해 컴포넌트를 동적으로 불러오기위해 React의 lazy와 suspense method를 Code Splitting 방법으로 활용하며 컴포넌트의 재사용성을 위해 memo를 사용한다
작업 내용
전체적으로 First Contentful Paint 속도와 Time to Interactive 속도가 많이 줄어든 것을 확인할 수 있었습니다
const Comments = lazy(() => import("../pages/Comments"));
const Login = lazy(() => import("../pages/Login"));
const Landing = lazy(() => import("../pages/Landing"));
const Mypage = lazy(() => import("../pages/Mypage"));
const Recipe = lazy(() => import("../pages/Recipe"));
const RecipeCreate = lazy(() => import("../pages/RecipeCreate"));
const RecipeDetail = lazy(() => import("../pages/RecipeDetail"));
const Register = lazy(() => import("../pages/Register"));
const RegisterComplete = lazy(() => import("../pages/RegisterComplete"));
const ResetPassword = lazy(() => import("../pages/ResetPassword"));
const ProfileEdit = lazy(() => import("../pages/ProfileEdit"));
const NotFound = lazy(() => import("../pages/NotFound"));
const RecipeEdit = lazy(() => import("../pages/RecipeEdit"));
return (
<>
<Suspense fallback={null}>
<Routes>
<Route 부분>
</Routes>
</Suspense>
</>
cmun2 commented
cmun2 commented
다음으로 reduce unused CSS 점수를 낮추는 방법을 생각하였다. 렌더링을 방해하는 요소인 google fonts를 preload로 변환시키는 방법을 채택하였다.
https://web.dev/unused-css-rules/?utm_source=lighthouse&utm_medium=devtools
해당 방법으로
Reduce Unused CSS
0.9s -> 0.46s
Eliminate Render-Blocking Resources
0.77s -> 해결(없어짐)
결과를 알 수 있었다