๐Ÿ–ฅFrontEnd/ํ”„๋ก ํŠธ์—”๋“œ

Lighthouse๋ž€, Lighthouse ์‚ฌ์šฉํ•˜๊ธฐ, Lighthouse ๋ถ„์„ํ•ด๋ณด๊ธฐ

hellohailie 2022. 8. 4. 16:01

 

Lighthouse๋ž€?

์‚ฌ์ดํŠธ๋ฅผ ๊ฒ€์‚ฌํ•˜์—ฌ ์„ฑ๋Šฅ ์ธก์ •์„ ํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ด๊ณ , ๊ฐœ์„ ์ฑ…๋„ ์ œ๊ณตํ•ด์ฃผ๋Š” ์ž๋™ํ™” ํˆด์ด๋‹ค. 

 

- ๊ตฌ๊ธ€์—์„œ ๊ฐœ๋ฐœํ•œ ์˜คํ”ˆ์†Œ์Šค์ด๊ณ , ์„ฑ๋Šฅ, ์ ‘๊ทผ์„ฑ, PWA, SEO ๋“ฑ์„ ๊ฒ€์‚ฌ ํ•œ๋‹ค. 

- Chorme DevTools, CLI, ๋…ธ๋“œ ๋ชจ๋“ˆ ๋“ฑ ๋‹ค์–‘ํ•œ ๊ฒฝ๋กœ๋ฅผ ํ†ตํ•ด ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค. 

- ๊ฒ€์‚ฌ ๊ฒฐ๊ณผ์— ๋”ฐ๋ฅธ ๋ฆฌํฌํŠธ๋ฅผ ์ƒ์„ฑํ•ด์ฃผ์–ด, ์ ์ˆ˜๊ฐ€ ๋‚ฎ์€ ์ง€ํ‘œ๋ฅผ ํ•œ๋ˆˆ์— ์•Œ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค. 

 

 

1. ๊ตฌ๊ธ€ ๊ฐœ๋ฐœ์ž ๋„๊ตฌ์—์„œ lighthouse ํƒญ์—์„œ ๊ฒ€์‚ฌ ๊ฐ€๋Šฅ

2. Node CLI ์—์„œ ์‹คํ–‰ํ•˜๊ธฐ

 

- ์ „์—ญ ๋ชจ๋“ˆ๋กœ ์„ค์น˜

npm install -g lighthouse

- ๊ฒ€์‚ฌ ์‹คํ–‰

lighthouse <url>

- ๋ชจ๋“  ์˜ต์…˜ ๋ณด๋Š” ๋ช…๋ น์–ด

lighthouse --help

๐Ÿ‘‡ ํฌ๋กฌ์—์„œ ๋ณธ ๋ฐฑ์ค€ ํŽ˜์ด์ง€์˜ Ligthhouse ๐Ÿ‘‡

 

๐Ÿ‘‡ ํฌ๋กฌ์—์„œ ๋ณธ ์ •์œก๊ฐ ํŽ˜์ด์ง€์˜ Ligthhouse ๐Ÿ‘‡

 

โœป Lighthouse ๋ถ„์„ ๊ฒฐ๊ณผ ํ•ญ๋ชฉ

 

1. performance = ์›น ์„ฑ๋Šฅ ์ธก์ •

- ํ™”๋ฉด์— ์ฝ˜ํ…์ธ ๊ฐ€ ํ‘œ์‹œ๋˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ฆฌ๋Š”์ง€

- ํ™”๋ฉด์— ํ‘œ์‹œ๋œ ํ›„ ์‚ฌ์šฉ์ž์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ธฐ๊นŒ์ง€ ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ฆฌ๋Š”์ง€

- ํ™”๋ฉด์— ๋ถˆ์•ˆ์ •ํ•œ ์š”์†Œ์˜ ์œ ๋ฌด  

 

2. accessibility = ์›น ์ ‘๊ทผ์„ฑ์„ ์ž˜ ๊ฐ–์ถ”๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธ

- ๋Œ€์ฒด ํ…์ŠคํŠธ๋ฅผ ์ž˜ ์ž‘์„ฑํ–ˆ๋Š”์ง€

- ๋ฐฐ๊ฒฝ์ƒ‰๊ณผ ์ฝ˜ํ…์ธ  ์ƒ‰์ƒ์˜ ๋Œ€๋น„๊ฐ€ ์ถฉ๋ถ„ํ•œ์ง€

- ์ ์ ˆํ•œ WAI-ARIA ์†์„ฑ์„ ์‚ฌ์šฉํ–ˆ๋Š”์ง€

 

3. best practice = ์›น ํ‘œ์ค€ ๋ชจ๋ฒ” ์‚ฌ๋ก€๋ฅผ ์ž˜ ๋”ฐ๋ฅด๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธ

- HTTPS ํ”„๋กœํ† ์ฝœ ์‚ฌ์šฉํ•˜๋Š”์ง€

- ์ฝ˜์†” ์ฐฝ์— ์˜ค๋ฅ˜๊ฐ€ ํ‘œ์‹œ๋˜๋Š”์ง€

 

4. SEO = ๊ฒ€์ƒ‰ ์—”์ง„ ์ตœ์ ํ™”๊ฐ€ ์ž˜ ๋˜์–ด์žˆ๋Š”์ง€ ํ™•์ธ

- ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ robots.txt๊ฐ€ ์œ ํšจํ•œ์ง€

- <meta> ์š”์†Œ๋Š” ์ž˜ ์ž‘์„ฑ๋˜์–ด ์žˆ๋Š”์ง€ 

- ํ…์ŠคํŠธ ํฌ๊ธฐ๊ฐ€ ์ฝ๊ธฐ์— ๋ฌด๋ฆฌ๊ฐ€ ์—†๋Š”์ง€ 

 

5. PWA (progressive web app) = ๋ชจ๋ฐ”์ผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ๋„ ์ž˜ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธ

- ์•ฑ ์•„์ด์ฝ˜์„ ์ œ๊ณตํ•˜๋Š”์ง€

- ์Šคํ”Œ๋ž˜์‹œ ํ™”๋ฉด์ด ์žˆ๋Š”์ง€

- ํ™”๋ฉด ํฌ๊ธฐ์— ๋”ฐ๋ผ ์ฝ˜ํ…์ธ ๋ฅผ ์ ์ ˆํ•˜๊ฒŒ ๋ฐฐ์น˜ํ–ˆ๋Š”์ง€

 


 

๐Ÿ‘‡ ์ •์œก๊ฐ ํŽ˜์ด์ง€์˜ Ligthhouse performance ์ธก์ • ๋ฉ”ํŠธ๋ฆญ ๐Ÿ‘‡

 

1. First Contentful Paint (FCP) 

์‚ฌ์šฉ์ž๊ฐ€ ํŽ˜์ด์ง€์— ์ ‘์†ํ–ˆ์„ ๋•Œ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ DOM ์ปจํ…์ธ ์˜ ์ฒซ๋ฒˆ์งธ ๋ถ€๋ถ„์„ ๋ Œ๋”๋งํ•˜๋Š”๋ฐ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ์ธก์ •ํ•œ๋‹ค. (์‚ฌ์šฉ์ž๊ฐ€ ๊ฐ์ง€ํ•˜๋Š” ํŽ˜์ด์ง€์˜ ๋กœ๋”ฉ ์†๋„๋ฅผ ์ธก์ •)

 

FCP๊ฐ€ 1.8์ดˆ ์ดํ•˜์ด๋ฉด UX ์ข‹์Œ.

 

 

2. Largest Contentful Paint (LCP)

๋ทฐํฌํŠธ๋ฅผ ์ฐจ์ง€ํ•˜๋Š” ๊ฐ€์žฅ ํฐ ์ฝ˜ํ…์ธ ์˜ ๋ Œ๋” ์‹œ๊ฐ„์„ ์ธก์ •

 

LCP 0~2.5 fast

LCP 2.5~4 moderate

LCP 4~ slow

 

 

3. Speed Index

ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ•˜๋Š” ๋™์•ˆ ์–ผ๋งˆ๋‚˜ ๋นจ๋ฆฌ ์ฝ˜ํ…์ธ ๊ฐ€ ์‹œ๊ฐ์ ์œผ๋กœ ํ‘œ์‹œ๋˜๋Š”์ง€ ์ธก์ •

 

0~3.4 fast

3.4~5.8 moderate

5.8~ slow

 

4. Time to interactive (TTI)

ํŽ˜์ด์ง€๊ฐ€ ๋กœ๋“œ๋˜๋Š” ์‹œ์ ๋ถ€ํ„ฐ ์‚ฌ์šฉ์ž์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์ด ๊ฐ€๋Šฅํ•œ ์‹œ์ ๊นŒ์ง€์˜ ์‹œ๊ฐ„ ์ธก์ •

 

0~3.8 fast

3.9~7.3 moderate

7.3~ slow

 

 

5. Total Blocking Time (TBT)

ํŽ˜์ด์ง€๊ฐ€ ์œ ์ €์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๊ธฐ๊นŒ์ง€์˜ ๋ง‰ํ˜€์žˆ๋Š” ์‹œ๊ฐ„์„ ์ธก์ •

(FCP, TTI ์‚ฌ์ด์— ๊ธด ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ์ž‘์—…๋“ค์„ ๋ชจ๋‘ ๊ธฐ๋กํ•ด์„œ TBT ์ธก์ •ํ•œ๋‹ค. )

 

 

6. Cumulative Layout Shift (CLS)

์‚ฌ์šฉ์ž์—๊ฒŒ ์ปจํ…์ธ ๊ฐ€ ํ™”๋ฉด์—์„œ ์–ผ๋งˆ๋‚˜ ๋งŽ์ด ์›€์ง์ด๋Š”์ง€ ์ˆ˜์น˜ํ™”ํ•œ ์ง€ํ‘œ

 


 

๐Ÿ‘‡ ๋ฐฑ์ค€ ํŽ˜์ด์ง€์˜ Performance์˜ Opportunities ํ•ญ๋ชฉ ๐Ÿ‘‡

 

 

๐Ÿ‘‡ ์ •์œก๊ฐ ํŽ˜์ด์ง€์˜ Performance์˜ Opportunities ํ•ญ๋ชฉ ๐Ÿ‘‡

 

๊ฐ€์žฅ ๋งŽ์€ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ ํ•ญ๋ชฉ 

 

Reduce unused JavaScript

 

=> ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์€ ํŽ˜์ด์ง€๋ฅผ ๋ Œ๋”๋งํ•˜๋Š”๋ฐ ํ•„์š”ํ•˜์ง€ ์•Š์€ ๋ฆฌ์†Œ์Šค์ด๋‹ค. ๋”์ด์ƒ ์‚ฌ์šฉ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์“ธ๋ชจ์—†๋Š” ๋ฆฌ์†Œ์Šค๋Š” ์ •๋ฆฌํ•ด์•ผํ•œ๋‹ค. 

 

ํŽ˜์ด์ง€๋ฅผ ๋” ๋นจ๋ฆฌ ๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•„์ˆ˜ ๋ฆฌ์†Œ์Šค์ธ HTML ์ฝ”๋“œ๋งŒ ๋ Œ๋”๋ง ํ•ด์•ผํ•œ๋‹ค. 

 

"unused JavaScript"๋ž€?

1. ์ค‘์š”ํ•˜์ง€ ์•Š์€ JS - ์›น ํŽ˜์ด์ง€์˜ ์ƒ๋‹จ์˜ ์ฝ˜ํ…์ธ ์— ์‚ฌ์šฉ๋˜์ง€ ์•Š์ง€๋งŒ ๋‹ค๋ฅธ ๊ณณ์—์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. 

2. ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” JS - ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ฑฐ๋‚˜, ์ผ์‹œ์ ์œผ๋กœ ์‚ฌ์šฉ๋œ JS ์ฝ”๋“œ

 

์†Œ์…œ ๊ณต์œ  ๋ฒ„ํŠผ๊ณผ ๊ฐ™์€ ์„œ๋“œ ํŒŒํ‹ฐ ์ฝ”๋“œ๋‚˜ ํ”Œ๋Ÿฌ๊ทธ์ธ ๋˜๋Š” ํŽ˜์ด์ง€ ๋นŒ๋”๋กœ ์ธํ•ด ๋ฐœ์ƒํ•œ๋‹ค. 

 

๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

 

Reduce unused JavaScript and defer loading scripts until they are required to decrease bytes consumed by network activity.

์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” JavaScript๋ฅผ ์ค„์ด๊ณ  ๋„คํŠธ์›Œํฌ ํ™œ๋™์— ์‚ฌ์šฉ๋˜๋Š” ๋ฐ”์ดํŠธ๋ฅผ ์ค„์ด๋Š” ๋ฐ ํ•„์š”ํ•  ๋•Œ๊นŒ์ง€ ์Šคํฌ๋ฆฝํŠธ ๋กœ๋“œ๋ฅผ ์—ฐ๊ธฐํ•œ๋‹ค. 

 

 

- ์›น์‚ฌ์ดํŠธ๊ฐ€ WordPress์—์„œ ์‹คํ–‰ ์ค‘์ธ ๊ฒฝ์šฐ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•ด์„œ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” JS๋ฅผ ์ œ๊ฑฐ๋‚˜ ๋น„ํ™œ์„ฑํ™” ํ•  ์ˆ˜ ์žˆ๋‹ค. 

https://ko.wordpress.org/plugins/wp-asset-clean-up/

 

- Chorme ๊ฐœ๋ฐœ์ž ๋„๊ตฌ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” JS ๊ฐ์ง€ํ•˜๊ณ  ๋ถˆํ•„์š”ํ•œ ํŒŒ์ผ ์‚ญ์ œํ•˜๊ธฐ

[Chorme ๊ฐœ๋ฐœ์ž ๋„๊ตฌ] - More tools - Coverage

 

 

- [Chorme ๊ฐœ๋ฐœ์ž ๋„๊ตฌ] - Lighthouse

 

 

์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๋Š”๋ฐ ๋„์›€์„ ์ฃผ๋Š” ๋นŒ๋“œ ๋„๊ตฌ ์•Œ์•„๋ณด๊ธฐ

https://bundlers.tooling.report/

 

(์ฝ”๋“œ ๋ถ„ํ• , ๋ฏธ์‚ฌ์šฉ ์ฝ”๋“œ ์ œ๊ฑฐ, ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ ์ œ๊ฑฐ)

 


Serve images in next-gen formats

 

์ฐจ์„ธ๋Œ€ ํ˜•์‹์˜ ์ด๋ฏธ์ง€ ์ œ๊ณต

 

๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

Image formats like WebP and AVIF often provide better compression than PNG or JPEG, which means faster downloads and less data consumption.

WebP ๋˜๋Š” AVIF ์ด๋ฏธ์ง€ ํฌ๋งท ์‚ฌ์šฉํ•˜๊ธฐ

=> WebP ๋ฐ AVIF์™€ ๊ฐ™์€ ์ด๋ฏธ์ง€ ํ˜•์‹์€ ์ข…์ข… PNG ๋˜๋Š” JPEG๋ณด๋‹ค ๋” ๋‚˜์€ ์••์ถ•์„ ์ œ๊ณตํ•˜๋ฏ€๋กœ ๋” ๋น ๋ฅธ ๋‹ค์šด๋กœ๋“œ์™€ ๋” ์ ์€ ๋ฐ์ดํ„ฐ ์†Œ๋น„๋ฅผ ์˜๋ฏธํ•œ๋‹ค. 

 

WebP ๋ฐ AVIF๋Š” JPEG, PNG ํ˜•์‹๋ณด๋‹ค ์šฉ๋Ÿ‰์„ ๊ฐ์†Œ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์ƒˆ๋กญ๊ฒŒ ๋“ฑ์žฅํ•œ ์ด๋ฏธ์ง€ ํฌ๋งท์ด๋‹ค. 

์ตœ๊ทผ์— ๋“ฑ์žฅํ•œ ํฌ๋งท์ด๊ธฐ ๋•Œ๋ฌธ์—, ์•„์ง ๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค. 

 

ํ•˜์ง€๋งŒ, ๊ฐ ๋ธŒ๋ผ์šฐ์ €์˜ ์ด๋ฏธ์ง€ ํ˜ธํ™˜์„ฑ์„ ํŒŒ์•…ํ•ด์„œ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๋ถ„๊ธฐํ•  ํ•„์š”์—†์ด HTML์˜ <picture>ํƒœ๊ทธ*๋ฅผ ์ด์šฉํ•˜๋ฉด ๋œ๋‹ค. 

 

* img ์š”์†Œ์˜ ๋‹ค์ค‘ ์ด๋ฏธ์ง€ ๋ฆฌ์†Œ์Šค๋ฅผ ์œ„ํ•œ ์ปจํ…Œ์ด๋„ˆ๋กœ ์‚ฌ์šฉ

<picture>
  <source srcset="logo.webp" type="image/webp">
  <img src="logo.png" alt="logo">
</picture>

โžฅ ๋งŒ์•ฝ ์ ‘์†ํ•œ ๋ธŒ๋ผ์šฐ์ €์—์„œ <source>ํƒœ๊ทธ ๋‚ด์˜ srcset์— ์ •์˜ํ•œ WebP ํฌ๋งท์„ ์ง€์›ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ํ•ด๋‹น <source> ํƒœ๊ทธ๋Š” ๋ฌด์‹œ๋œ๋‹ค. 

 

 

๐Ÿ‘‡ ๋ช…๋ น์ค„์„ ์‚ฌ์šฉํ•ด์„œ WebP ์ด๋ฏธ์ง€ ๋งŒ๋“ค๊ธฐ ๐Ÿ‘‡

https://web.dev/codelab-serve-images-webp/

 

 

 

 

 

์ฐธ๊ณ )

https://sitechecker.pro/site-audit-issues/remove-unused-javascript/

 

https://web.dev/uses-webp-images/?utm_source=lighthouse&utm_medium=devtools

 

๐Ÿ˜ƒ ์ž˜๋ชป๋œ ๊ฐœ๋… ์ „๋‹ฌ์ด ์žˆ๋‹ค๋ฉด ๋Œ“๊ธ€ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ €์˜ ์„ฑ์žฅ์— ํฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค๐Ÿค“