웹 브라우저는 User-Agent라고도 함.
브라우저는 HTML, CSS, JS 파일을 받아서 화면에 렌더링.
먼저 HTML을 요청하고 HTML의 내용을 분석한다.
이 때, 서버로 다시 요청을 보내야 하는 파일(ex. css파일, <img src="~~">
)을 만날 수 있다.
HTML을 분석하여 DOM Tree를 생성하고, CSS도 분석하여 Style Rules를 만든다. 이 두 개를 합쳐서 Render Tree를 만든다.
Render Tree의 정보를 이용해 Layout을 구성하고, Painting하여 화면에 출력한다.
이 작업은 브라우저의 메인 스레드에서 동작하는데 HTML 코드 중 JS 코드를 만나게 되면 HTML의 파싱을 멈추고 JS 파일을 다운 받는다.
따라서 JS파일을 비동기로 요청하거나 HTML내용의 마지막에 위치시킨다.
클라이언트가 Request를 보내면 중간의 프록시 서버(Cache)에서 캐시가 비어있으면 바로 서버로 요청을 전달하고, 응답 받은 내용에서 Cache 관련 부분을 해석해, 만약 Cache-control : max-age 100 이면 100초 동안 서버에 요청을 전달하지 않고 캐시에 있는 데이터를 반환해준다.
페이지 로딩이 빨라진다.
HTTP 요청이 하나만 전송되는 것이 아니라 HTML 페이지 내용에 따라서 연결되는 HTTP 요청과 리소스 다운로드 흐름을 이해한다.