inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

한 입 크기로 잘라먹는 Next.js

9.1) 이미지 최적화

#9.1 이미지 최적화 / css backgroundImage url 최적화 관련 질문

해결된 질문

274

kdm1jkmm

작성한 질문수 1

1

강의를 잘 듣던 도중에 궁금증이 생겨 질문드립니다.

 

#9.1 이미지 최적화 강의를 듣고 나서 생긴 궁금증입니다. 여러 img태그를 next에서 제공하는 Image 태그로 교체함으로써 웹사이트의 이미지를 최적화시킬 수 있다는 점은 잘 이해했습니다.

 

하지만 이렇게 된다면 이전 강의에서 배운 도서 상세 페이지에서 도서의 표지를 검은색 배경으로 깔기 위해 사용했던 div 태그 내의 css ( BackgroundImage: url(...) ) 부분이 가져오는 이미지는 최적화가 전혀 되지 않을 것 같다는 생각이 들었습니다.

 

열심히 최적화를 해 봐야 저 부분에서 풀 사이즈의 이미지를 중복해서 가져온다면 성능에 다시 악영향이 갈 것 같다고 생각하였고, 나름의 답을 생각해 보았는데, 어떤 답이 맞는 것인지 잘 모르겠어 이렇게 질문드립니다.

 

  1. 배경 부분도 Image 태그로 불러운 다음 css를 적절하게 사용해 똑같이 배경 느낌으로 만들어 준다.

  2. css url로 가져온 이미지는 자주 가져오지 않으므로 최적화하지 않아도 큰 영향은 없다.

사실 고민을 해 보아도 이 두가지 밖에 떠오르지 않아 둘 중에 답이 있는 것인지, 아니라면 어떤 방법을 적용하는 것이 좋은 방법일지 질분드립니다.

react typescript next.js

답변 2

2

이정환 Winterlood

안녕하세요 이정환입니다.

둘 다 해결책이 될 수는 있겠지만 보통 이런 경우 간단히 이미지 자체를 최적화 하여 저장 해 놓는 방법이 가장 선호 됩니다. 구체적으로는 이미지를 CDN이나 클라우드에 avif나 webp 형식으로 변환해 저장해두고 background url을 위해서만 가져다 쓰는 방식이죠 이때 이미지의 사이즈가 과도하게 큰 것이 문제가 될 것 같다면 사이즈도 줄인 상태로 저장해두는 쪽으로 해결할 수 있습니다.

0

kdm1jkmm

답변 감사드립니다! :)

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

kdm1jkmm님, 질문 주셔서 감사합니다. Next.js에서 이미지 최적화를 통해 웹 페이지의 성능을 개선하는 방법에 대해 고민해보신 것 같아 기쁩니다. 다음과 같은 두 가지 방법을 고려해볼 수 있습니다:

1. 배경 이미지를 최적화:

Next.js의 Image 컴포넌트를 통해 배경 이미지를 최적화하는 것은 일반적으로 권장되지 않습니다. Image 컴포넌트는 HTML img 태그와 통합되어 작동하므로, CSS 배경 이미지에 직접 사용할 수 없습니다. 그러나 배경 이미지 최적화를 위한 대안으로는 CSS background-image 속성에 사용하는 이미지를 서버에서 미리 최적화하거나 CSS에서 사용할 이미지를 압축하고 사이즈를 조정하여 로드 시간을 줄일 수 있습니다.

2. CSS URL로 가져오는 이미지의 영향:

일반적인 웹 페이지에서 CSS를 통해 설정된 배경 이미지는 실제 화면에 많이 나타나지 않는 한 성능에 크게 영향 주지 않습니다. 다만 성능 개선이 필요한 경우, 배경 이미지를 아래의 방법으로 조금 더 관리할 수 있습니다:
- 이미지를 사전에 압축하여 파일 크기를 줄이기.
- 웹 서버에서 이미지를 제공할 때, 캐싱(Caching) 메커니즘을 통해 자주 요청되지 않도록 설정.
- 파일 포맷을 최신 포맷(WebP 등)으로 변경하여 더 나은 압축률을 달성.

관련 정보가 더 필요하시면 Next.js의 이미지 최적화 관련 질문에서 더 많은 인사이트를 얻으실 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.

현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

버셀로 서버 배포 후 접속 시 500 에러 발생

0

66

2

컴포넌트와 레이아웃

0

54

2

@/styles/globals.css'

0

50

2

풀라우트캐시 동작 원리에서 데이터 캐시 관련 질문

0

71

2

next.js 프로젝트

0

68

1

Next.js + Tanstack Query BFF 구조 질문

1

82

2

Next.js 사전렌더링 이해하기 부분

0

84

2

모달 관련 질문

0

88

3

렌더링 관련 질문

0

108

2

중복으로 하나의 api를 요청할 때 캐싱 옵션 통일화

0

97

2

라우트 세그먼트 옵션 강좌 노트에 사소한 제보 남깁니다.

0

95

2

SSR시 context에 params말고 query를 사용하면 안되나요?

0

107

2

npx prisma db push 시 에러가 뜹니다.

0

131

3

vercel 배포를 실패하였습니다.

0

150

3

Image 컴포넌트 사용시 브라우저 콘솔에 경고는 왜 뜨는걸까요?

0

93

2

getServerSideProps 함수와 SSR의 관계

0

118

6

없는 페이지인데 풀라우트캐시로 저장이 되는 이유가 궁금합니다

0

93

2

실제 프로젝트에서 SSR 사용에 관해서 질문드립니다.

0

145

2

일반적인 nextjs project architecture에 대하여..

0

120

2

2.14 Search에서 작성한건 static이긴하지만 CSR이 아닌가요?

0

101

2

배포 시 오류 발생

0

111

2

백엔드 서버 오류납니다.

0

107

2

취약점 제거시 nestjs 버전 문제가 생길까요?

0

117

1

eslint.config.mjs 내 rules 어떻게 설정 하나요?

0

130

1