ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • HTTP/2 for Web Application Developers ( 1 / ?? )
    카테고리 없음 2016. 7. 2. 01:09
    # HTTP/1.x 까지는..

    + HTTP는 웹이 처음 등장하는 1990년 초기 HTML과 함께 발표되었다.
    + HTTP  Connection 은 한번에 한메시지만 다루고 재사용이 불가했다.
    + 초기 웹 페이지는 간단했다. 글자, 헤더, 몇몇의 이미지, 그래서 이러한 Connection 구조로도 충분했다.

    + 이미지 파일들과 CSS, Javascript를 포함한 페이지가 증가하면서, Single Connection은 충분치가 않았다.
    + 오늘날의 많은 웹페이지들은 100가지 이상의 개별 요소들을 갖는다.
    + 페이지 로딩 시간을 줄이기위해 브라우저들은 파일 병렬 전송을 위해 6~8개 정도의 다중 연결을 만들었다.

    + 1999년 기존의 HTTP의 몇몇 한계들을 개선한 HTTP 1.1이 발표된다.
    + keepalive 연결을 표준화 했다. ( keepalive 연결의 경우 재사용이 가능)
    + 그러나 keepalive는 여전히 문제를 가지고 있다. 
    + 큰 파일을 요청하는 경우 더 작은 파일들을 요청하는 다른 요청들이 지연된다.
    + HOL( Head Of Line Bloking)이 발생한다. - 동일한 송신 포트 자원에 대한 처리량 경쟁으로 인해 처리량 지연 및 프레임 손실이 발생한다.
    + HOL 블로킹은 패킷을 대기 행렬에 넣으며 대기열의 머리에 있는 패킷은 대기열의 끝에 있는 패킷보다 먼저 전달된다. 

    + HTTP 1.x의 연결은 SSL의 전역적인 채택에 반대한다. 
    + SSL은 별도의 Connection 수립 과정이 필요하다. Connection이 인증을 획득해야 하는 과정이 추가된다.
    + 다중 Connection을 사용한다는 것은 초기 SSL 연결에 더 많은 대기시간이 걸린다는 것을 의미한다.

    + 개발자들은 HTTP 1.x의 단점을 최소화 하기 위한 몇가지 최적화 기법을 사용한다. 
    = Domain Sharding : 파일들이 다수의 하위 도메인 바깥으로 포장된다. 브라우저는 6~8개의 연결을 통해 각가의 파일을 응답받는다.
    병렬로 파일전송은 가능하나 연결을 수립하는 시기에 오버해드가 발생한다.
    = Image spirites : 이미지들은 효율적인 다운로드를 위해 큰 하나의 파일로 결합된다. 사용자들은 이미지를 보기전까지 대기시간이 길어진다
    사이즈가 큰 파일들은 캐싱과 램에 상주된 데이터를 약화시킨다.
    = Concatenating code files : Javascript, CSS와 같은 코드들은 하나의 파일 만든다 
    = Inlining files : CSS 코드, Javascirpt 코드, 몇몇의 이미들은 HTML파일에 직접적으로 포함한다. 이 방식은 Connection 사용을 줄이지만 여분의 램을 차지하고 HTML파일 다운로드가 끝날때까지 초기 페이지 렌더링에 시간이 오래걸린다.

    + 결론적으로 추가적 Connection들은 네트워크에 부담을 준다. 하지만 고맙게도, Connection과 관련된 기법들은 HTTP2에 의해 불필요하게 되었고
    새로운 규칙에 의해 없어질 수 있게 되었다.



Designed by Tistory.