HyperText Transfer Protocol
PUT
, DELETE
추가→ 리소스의 우선순위가 없어 렌더링 비효율
→ 동시성을 위해 여러 연결 사용
Server Push
- 데이터 하나를 요청했지만 여러 데이터 응답 (html 요청 - css, js도 응답)handshake
의 지연시간 등 문제 존재TCP
+ TLS
+ HTTP
의 기능을 모두 구현하는 프로토콜handshake
과정을 거치지 않아 속도가 빠르다Connection ID
를 사용해 생성한 키로 통신을 암호화 → 이 설정을 캐싱해두었다가 바로 연결 성립한 줄마다 \r\n 줄바꿈 문자가 포함
Header
Cookie
: 클라이언트 - 서버 간의 공유할 수 있는 자원Access-Control-Allow-Origin
: 다른 도메인 간의 요청 설정Content-Type
, Content-Length
: 리소스 타입과 크기Content-Type:
text/plain
text/html
text/css
image/jpeg
image/png
audio/mpeg
audio/ogg
audio/*
video/mp4
application/octet-stream
multipart/mixed
Cache-Control
: 캐시 설정Expires
: 캐시 만료 시간Last-modified
, If-Modified-Since
: 마지막 갱신 시간GET
, POST
, PUT
, DELETE
등 요청 method 사용GET
: URL 뒤에 쿼리로 필요한 인자를 전달하며 필요한 데이터나 웹페이지를 받아오는데 사용POST
: BODY에 값을 붙여서 보내며 서버의 상태 변화를 일으키기도 함PUT
: 데이터 전체 교체PATCH
: 데이터 부분 변경DELETE
: 데이터 삭제OPTIONS
: 서버에서 지원하는 메서드 확인200
(OK) : 정상적인 처리302
(See Other) : 리다이렉트 용도304
(Not Modified) : 수정되지 않았으므로 캐시 사용하라403
(Forbidden) : 권한 없음404
(Not Found) : 리소스가 없음500
(Internal Server Error) : 서버 내부 오류502
(Bad Gateway) : 중간 계층 오류503
(Service Unavailable) : 서비스 제공 불가HTTP Request
요청 메시지를 만들어 서버에 전송HTTP Response
메시지를 받아 화면에 표시Render Tree
생성자바스크립트 코드
가 포함되면 HTML 파싱이 중단되고 JS 엔진에게 제어권이 넘어감async
, defer
어트리뷰트를 통해 JS 코드를 비동기적으로 불러옴으로써 DOM 렌더링의 블로킹을 방지할 수 있음참고자료
https://velog.io/@ziyoonee/HTTP1-부터-HTTP3-까지-알아보기
https://babbab2.tistory.com/4
https://incheol-jung.gitbook.io/docs/q-and-a/computer-science/http-header
https://velog.io/@uncyclocity/JavaScript-브라우저의-렌더링-과정