Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 코딩
- react
- js
- 프로그래밍
- 프로그래머스
- javascript
- 코딩테스트
- Web
- 내밥줄지켜
- 밀러컬럼
- 블레이버스
- 파킨슨병
- 자바스크립트
- Next
- 새복많
- 30대까지이루기
- frontend
- pccp
- 웹개발
- 프론트엔드
- AI에게서 살아남기
- 회사
- 개발자
- 2026
- 개발
- #유데미 #udemy #웅진씽크빅 #스나이퍼팩토리 #인사이드아웃 #미래내일일경험 #프로젝트캠프 #부트캠프 #react #next.js #프론트엔드개발자양성과정 #개발자교육과정
- 타입스크립트
- 백엔드
- 신입
- 밥줄지키기프로젝트
Archives
- Today
- Total
낭 만 당
웹 성능 최적화 기법: chapter2 웹 최적화 본문
웹 최적화 가이드
최적화란
알맞은 상황으로 맞춘다
IT시스템의 최적화란?
같은 비용과 시스템을 사용했더라도 어떻게 설계하고 구현했는지에 따라 성능과 시스템의 신뢰성이 다르다.
1. 성능 최적화
1.1 HTTP 요청 최소화
- CSS와 JavaScript 파일을 결합하여 요청 수를 줄인다.
- 아이콘 및 이미지를 위해 CSS 스프라이트를 사용한다.
- 비핵심 자산(이미지 등)은 **지연 로드(Lazy Load)** 처리한다.
1.2 압축을 활성화한다
- Gzip 또는 Brotli 압축을 사용하여 데이터 전송 크기를 줄인다.
- HTML, CSS, JavaScript 코드를 축소(Minify)한다.
1.3 캐시를 활용한다
- 정적 자산에 적절한 캐시 만료 헤더를 설정한다.
- 서비스 워커(Service Worker)를 사용하여 오프라인 캐싱을 구현한다.
2. SEO 최적화
2.1 메타 태그를 설정한다
<title>태그에 페이지 목적을 명확히 작성한다.<meta name="description">에 키워드를 포함하여 페이지 요약을 작성한다.
2.2 URL 구조를 개선한다
- 짧고 의미 있는 URL을 작성한다.
- 하이픈(-)으로 단어를 구분하고 키워드를 포함한다.
3. 사용자 경험(UX) 최적화
3.1 반응형 디자인을 적용한다
- 모든 화면 크기에서 잘 작동하도록 CSS 미디어 쿼리를 사용한다.
- 모바일 기기를 위한 터치 친화적인 버튼 크기와 간격을 유지한다.
3.2 페이지 로드 속도를 최적화한다
- 초기 콘텐츠 로드를 빠르게 하기 위해 중요 CSS를 인라인으로 작성한다.
- JavaScript 파일은
defer또는async속성을 사용한다.
4. 접근성(Accessibility)을 개선한다
4.1 ARIA 태그를 활용한다
- 스크린 리더가 올바르게 작동하도록 ARIA 속성을 추가한다.
- 중요 요소에 적절한
role및aria-label을 추가한다.
4.2 대체 텍스트를 작성한다
- 이미지에 의미 있는
alt텍스트를 작성한다. - 장식용 이미지에는 비어 있는
alt=""를 설정한다.
5. 보안 최적화
5.1 HTTPS를 적용한다
- SSL/TLS 인증서를 설치하고 HTTPS를 강제 적용한다.
5.2 콘텐츠 보안 정책(CSP)을 설정한다
- 신뢰할 수 있는 출처만 로드되도록 CSP를 설정한다.
프론트엔드에서 신경 써야 할 부분
- 스크립트를 병합하여 브라우저 호출 개수 줄이기
- 스크립트 크기를 최소화해 바이트 자체를 줄이기
- 스크립트를 GZIP 등으로 합축하여 전달하기
- webP 등으로 브라우저 이미지 형식을 최적화하기
- 이미지 손실, 무손실 압축하기
- Cache-Control 응답 헤더를 통해 브라우저 캐시를 충실히 사용하기
- 도메인 수를 줄여 DNS 조회를 초소화하기
- DNS 정보 미리 읽어오기
- CSS를 HTML 상단에, JAVASCRIPT를 HTML 하단에 위치시키기
- 페이지 미리 읽어오기 (page prefetching)
- 타사 스크립트가 웹 성능을 방해하지 않도록 조정화기
1. 번들 크기 최적화
- 코드 스플리팅을 적용하여 필요한 코드만 로드한다.
- 필요 없는 라이브러리를 제거하고 경량화된 대안을 선택한다.
2. 이미지 최적화
- 웹용 최적화된 포맷(WebP, AVIF)을 사용한다.
- 필요한 해상도에 맞는 이미지 크기를 제공한다.
3. 사용자 상호작용 최적화
- 로딩 상태와 피드백을 제공하여 사용자 경험을 개선한다.
- 스무스 스크롤링 및 애니메이션에 GPU를 활용한다.
4. 데이터 페칭 최적화
- 필요한 데이터만 요청하고 불필요한 네트워크 요청을 피한다.
- GraphQL 또는 REST API 최적화를 통해 응답 크기를 줄인다.
패킷(Packet): 컴퓨터 네트워크에서 데이터를 전송하기 위해 작게 나눈 데이터 단위.
인터넷이나 네트워크에서 정보가 이동할 때, 큰 데이터는 작은 패킷으로 쪼개져 전송되고, 수신 측에서 이를 다시 조립하여 원래의 데이터를 복구한다.
패킷의 구성 요소
패킷은 크게 헤더(Header), 페이로드(Payload), 그리고 경우에 따라 **트레일러(Trailer)**로 구성.
- 헤더(Header)
패킷의 시작 부분으로, 데이터 전송에 필요한 메타 정보를 포함.- 출발지 주소: 데이터를 보낸 장치의 IP 주소.
- 목적지 주소: 데이터를 받을 장치의 IP 주소.
- 프로토콜 정보: TCP, UDP 등 어떤 통신 프로토콜을 사용하는지 표시.
- 패킷 번호: 패킷이 순서대로 재조립될 수 있도록 번호를 지정.
- 오류 검출 코드: 데이터 손상 여부를 확인하기 위한 정보.
- 페이로드(Payload)
실제 전송되는 데이터 내용. 예를 들어, 이메일 본문, 웹페이지 데이터, 또는 파일 조각이 포함. - 트레일러(Trailer) (선택적)
데이터 무결성을 확인하기 위해 사용되는 정보. 헤더의 오류 검출 코드와 비슷한 기능 수행 가능.
패킷 통신의 과정
- 분할:
큰 데이터를 네트워크를 통해 전송하기 쉽게 작은 패킷으로 나눈다. - 전송:
나뉜 패킷은 인터넷이나 네트워크를 통해 목적지로 전달된다. 이 과정에서 여러 경로를 거칠 수 있다. - 조립:
수신 측에서 패킷을 원래의 순서대로 재조립하여 데이터를 복원한다.
패킷 기반 통신의 장점
- 효율성:
네트워크 대역폭을 효율적으로 사용하고, 다수의 사용자가 동시에 네트워크를 사용할 수 있음. - 신뢰성:
손실된 패킷은 재전송할 수 있어 데이터 손상 가능성이 낮음. - 유연성:
서로 다른 경로를 통해 데이터를 전송할 수 있어 네트워크 혼잡을 줄임.
패킷과 관련된 기술
- TCP/IP(Transmission Control Protocol/Internet Protocol): 패킷 기반으로 데이터를 전송하는 인터넷의 핵심 프로토콜.
- 라우터: 패킷을 목적지로 효율적으로 전달하는 장치.
- MTU(Maximum Transmission Unit): 한 번에 전송 가능한 최대 패킷 크기.
'Programming Record' 카테고리의 다른 글
| 프로그래머스 Lv1 수박수박수~ 문제 풀기와 코드의 변화 (1) | 2025.07.16 |
|---|---|
| 프로그래머스 Lv 1 - 하샤드 수 (JavaScript) (1) | 2025.07.07 |
| 웹 성능 최적화 기법: chapter3 웹 사이트 성능을 개선하는 기본적인 방법 (1) | 2024.11.30 |
| 프로그래머스 Lv:0 최빈값 구하기 (4) | 2024.11.26 |
| [Study] Clean Code: Week 1 (4) | 2024.10.16 |