Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix-fe: Lighthouse LCP 이슈 해결 #730

Merged
merged 6 commits into from
Sep 26, 2024
Merged

Conversation

github-actions[bot]
Copy link
Contributor

@github-actions github-actions bot commented Sep 26, 2024

Original issue description

목적

  • 현재 크루루의 랜딩 페이지에서 Lighthouse 퍼포먼스 측정시 LCP가 잡히지 않는 문제가 있습니다.
    image

  • 관련하여 LCP 측정 기준에 관한 공식 문서를 참고한 결과, 아래와 같은 경우에는 LCP 측정 대상에서 제외된다는 점을 확인했어요.

    • 전체 표시 영역을 덮는 이미지/배경이미지
    • opacity: 0인 요소들
  • 현재 랜딩페이지의 요소들은 모두 opacity0인 상태로 최초에 그려진 뒤, 애니메이션을 통해 드러나는 형태로 되어있어요. 이것이 Lighthouse에서 LCP가 잡히지 않는 원인으로 추정됩니다.

  • 웹사이트 기능 자체에는 문제가 없으나, 로딩 성능 개선 전후 비교에 필요한 측정을 가능하도록 하기 위해 이 문제를 해결하고자 합니다.

작업 세부사항

  • LCP 측정 대상 요소의 opacity 스타일 속성 수정

참고 사항

아래의 별표줄 밑에 요구사항 ID만 작성해주세요. Prefix 금지!


FIX_LANDING_01

목적

  • 현재 크루루의 랜딩 페이지에서 Lighthouse 퍼포먼스 측정시 LCP가 잡히지 않는 문제를 수정합니다.
  • 상세 문제 내용은 위의 "Original issue description"을 펼쳐서 확인해주세요.

수정 내용

  • 랜딩 페이지에서 LCP 측정 대상 요소의 opacity 관련 애니메이션 코드 수정
  • 랜딩 페이지 CSS에서 el:nth-child()el:nth-of-type()로 수정 (LCP와 별개로 emotion 경고 메시지 대응)

수정 전 Lighthouse 화면

image

수정 후 Lighthouse 화면 (localhost 기준)

image

관련 이슈

@github-actions github-actions bot added fix 버그 수정 frontend 프론트엔드 labels Sep 26, 2024
@github-actions github-actions bot added this to the 스프린트 5.0 milestone Sep 26, 2024
Copy link
Contributor Author

1727339870.203839

Copy link
Contributor Author

1727339878.696509

opacity: 0;
opacity: 0.01;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

0.01로 바꾸면 어떤 이점이 있는걸까용?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LCP 측정 기준에 따르면, 아래와 같은 경우에는 LCP 측정 대상에서 제외되어요.

  • 전체 표시 영역을 덮는 이미지/배경이미지
  • opacity: 0인 요소들

현재 랜딩페이지로 접속했을 때 처음 드러나는 모든 요소들은 opacity0인 상태로 최초에 그려진 뒤, 애니메이션을 통해 드러나는 형태로 되어있어요. 이것이 Lighthouse에서 LCP가 잡히지 않는 원인이었어요.

위 코드는 애니메이션 시작점의 opacity0 대신 0.01로 잡는 코드에요. 이렇게 하면 실제 애니메이션 효과에는 거의 영향을 미치지 않으면서, Lighthouse의 LCP 측정에도 방해되지 않게 됩니다. 요 문서에서 힌트를 잡아 적용한 부분이에요 :)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

1 대신 0.99로 설정함으로서 성능향상 할 수 있단는 걸 월하 테코톡에서 들은 것 같아서 성능 이점이 있나? 생각했에요 ㅎㅎ

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

아하 그 부분은 따로 고려하지 않았던 부분입니다 ㅎㅎ

Copy link
Contributor

@llqqssttyy llqqssttyy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

@@ -92,19 +92,19 @@ const Catchphrase = styled.h1`
white-space: pre-wrap;
}

span:nth-child(1) {
span:nth-of-type(1) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nth-of-type은 정확히 span인 자식요소의 순서를 의미하는군요! 배워갑니다~

@@ -21,7 +21,7 @@ const bounce = keyframes`

const fadeIn = keyframes`
0% {
opacity: 0;
opacity: 0.01;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

정말 상상도 못한..😅

@seongjinme
Copy link
Contributor

랜딩페이지 일부 이미지에 누락된 alt 속성까지 추가해서 머지 진행합니다.

@seongjinme seongjinme merged commit 54770ee into fe/develop Sep 26, 2024
1 check passed
@seongjinme seongjinme deleted the fe-729-FIX_LANDING_01 branch September 26, 2024 09:00
llqqssttyy pushed a commit that referenced this pull request Sep 27, 2024
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Seongjin Hong <[email protected]>
Co-authored-by: Seongjin Hong <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
fix 버그 수정 frontend 프론트엔드
Projects
Status: 완료
Development

Successfully merging this pull request may close these issues.

3 participants