> 백엔드 개발 > PHP 튜토리얼 > HTTP/2 : 배경, 성능 이점 및 구현

HTTP/2 : 배경, 성능 이점 및 구현

Christopher Nolan
풀어 주다: 2025-02-08 09:12:10
원래의
644명이 탐색했습니다.

http/2 : 웹 페이지로드 속도를 크게 향상시키는 네트워크 프로토콜

코어 포인트 : HTTP/2: Background, Performance Benefits and Implementations

HTTP/2 (2015 년에 출시)는 HTTP 헤더를 압축, 서버 푸시 구현 및 단일 연결에서 요청을 멀티플렉싱하여 전임자 HTTP/1.1의 대기 시간 문제를 해결합니다. 또한 팀 헤드 차단 문제를 해결하도록 설계되었으며 기본적으로 암호화가 필요합니다.

HTTP/1.1에서 HTTP/2 로의 전환은 기존 웹 사이트에서 후진 호환성이 필요하기 때문에 도전이 없습니다. 프로토콜의 개선은 인터넷을 방해하지 않는 방식으로 구현되어야합니다. 모든 주류 브라우저는 현재 HTTP/2를 지원하지만 모든 HTTP/2 요청을 암호화해야하며 이는 HTTP/2 사양 자체의 요구 사항이 아닙니다. 서버에서 HTTP/2 구현에는 일반적으로 서버 소프트웨어를 업그레이드하거나 HTTP/2를 지원하는 버전으로 업그레이드하고 HTTP/2 기능을 활성화하도록 서버를 구성하는 것이 포함됩니다. HTTP/2에는 SSL 인증서가 필요하므로 웹 사이트는 HTTP를 통해 서비스를 제공해야합니다.

    HTTP 프로토콜의 진화 :
  • 인터넷의 인프라 또는 물리적 네트워크 계층은 인터넷 프로토콜 (TCP/IP 또는 전송 계층의 일부로)입니다. 대부분의 인터넷 커뮤니케이션의 인프라입니다.
  • 위의 응용 프로그램 계층이며 다양한 응용 프로그램이 다른 프로토콜을 사용하여 정보를 연결하고 전송합니다. 예를 들어, 우리는 SMTP, POP3 및 IMAP를 사용하여 IRC 및 XMPP를 수신합니다.
  • 인터넷과 동의어 인 가장 유명한 프로토콜은 HTTP (하이퍼 텍스트 전송 프로토콜)입니다. 우리는 매일 웹 사이트를 방문하는 데 사용합니다. Tim Berners Lee가 1989 년 초에 설계했습니다. 버전 1.0에 대한 사양은 1996 년 (RFC 1945)에 출시되었으며 버전 1.1은 1999 년에 출시되었습니다.
  • HTTP 사양은 월드 와이드 웹 얼라이언스에 의해 유지되며 https://www.w3.org/standards/techs/http에서 찾을 수 있습니다.
  • 1 세대 HTTP 프로토콜 (버전 1.0 및 1.1)은 HTTP/2가 출시 된 후 업계 (웹 서버 및 브라우저 공급 업체)가 채택하기 시작한 2015 년까지 인터넷을 지배했습니다.
  • http/1.1의 제한 사항 :

http는 요청-응답 구조를 기반으로 한 상태없는 프로토콜입니다. 즉, 클라이언트가 서버에 요청을합니다. (예를 들어, 사용자 세션에서 여러 요청을 연결하여 웹 사이트의 인증 된 버전을 로그인 사용자에게 제공 할 수 있도록 쿠키를 사용하는 이유입니다).

전송은 일반적으로 클라이언트 (사용자 브라우저)에 의해 시작되며 서버는 일반적으로 이러한 요청에만 응답합니다. 현재의 HTTP 상태는 상당히 "서투른"또는 오히려 낮은 수준이므로 효과적으로 의사 소통하는 방법을 설명하기 위해 브라우저와 서버에 많은 "도움말"이 필요하다고 말할 수 있습니다. 많은 기존 웹 사이트가 도입 된 변경 사항과 뒤로 호환되는 데 의존하기 때문에이 영역을 변경하는 것은 쉽지 않습니다. 프로토콜을 개선하도록 설계된 모든 작업은 인터넷을 방해하지 않고 완벽하게 수행해야합니다.

여러면 에서이 엄격한 요청-응답, 원자, 동기화 모델은 병목 현상이되었으며 진행 상황은 일반적으로 Google 및 Facebook과 같은 업계 리더가 주도하는 해킹 형태를 취했습니다. 일반적인 상황 (다양한 방식으로 개선되고 있음)은 방문자가 웹 페이지를 요청할 때, 브라우저가 서버에서 수신 할 때 HTML을 구문 분석하고 CSS, 이미지, CSS, 이미지, 예를 들어 페이지를 렌더링하는 데 필요한 다른 리소스를 찾습니다. 및 JavaScript. 이러한 리소스 링크가 발생하면 다른 모든 컨텐츠로드를 중지하고 서버에서 지정된 리소스를 요청합니다. 수령 될 때까지 전혀 움직이지 않습니다. 그런 다음 다른 리소스 등을 요청합니다.

세계 최고 웹 사이트로드에 필요한 요청 수는 일반적으로 수백입니다.

여기에는 많은 대기 시간과 많은 왕복 시간이 포함되며,이 기간 동안 방문객은 흰색 화면 또는 반 렌더링 된 웹 사이트 만 볼 수 있습니다. 이것들은 모두 몇 초의 낭비입니다. 이러한 요청주기 동안 많은 양의 사용 가능한 대역폭이 유휴 상태이며 사용되지 않습니다.

CDN은 이러한 문제를 많이 완화 할 수 있지만 임시 솔루션 일뿐입니다. HTTP/2: Background, Performance Benefits and Implementations Mozilla의 Daniel Stenberg (HTTP/2 표준화에 관여하는 사람들 중 하나)가 지적했듯이, 프로토콜의 첫 번째 버전은 기본 전송 계층 TCP의 용량을 최대한 활용하는 데 어려움을 겪고 있습니다. 웹 사이트로드 속도를 최적화하기 위해 노력한 사용자는 일반적으로이를 완화 적으로 만들기 위해서는 창의성이 필요하다는 것을 알고 있습니다.

시간이 지남에 따라 인터넷 대역폭 속도가 크게 증가했지만 HTTP/1.1 ERA의 인프라는이를 최대한 활용하지 못했습니다. 여전히 HTTP 파이프 라인과 같은 문제를 다루는 데 어려움을 겪고 있습니다. 동일한 TCP 연결을 통해 더 많은 리소스를 뿌려야합니다. 브라우저의 클라이언트는 가장 많은 드래그, Firefox 및 Chrome을 기본적으로 비활성화하거나 IE, Firefox 54 버전 등과 같이 전혀 지원되지 않습니다. 이것은 작은 자원조차도 새로운 TCP 연결을 열어야한다는 것을 의미합니다. TCP 핸드 셰이크, DNS 조회, 지연 등 - 팀 차단 헤드로 인해 리소스의로드로 인해 모든 차단을 유발할 것임을 의미합니다. 다른 자원의로드.

는 파이프 라인 연결과의 비 지식 연결과 파이프 라인 연결을 비교하여 부하 시간 절약 가능성을 보여줍니다.

HTTP/1 모델에서 웹 개발자가 웹 사이트를 최적화하기 위해 사용해야하는 일부 최적화 기술에는 이미지 마법사, CSS 및 JavaScript 연결이 포함됩니다 (방문자의 리소스 요청을 여러 도메인 또는 하위 도메인 등).

개선이 필요합니다. 기존 웹의 중단 작업을 피하기 위해 이러한 문제를 원활하고 뒤로 호환되는 방법으로 해결해야합니다.

spdy and http/2 :

2009 년에 Google은 차세대 프로토콜 SPDY (Speedy )의 초안 제안이 될 프로젝트를 발표하여 크롬에 대한 지원을 추가하고 향후 몇 년 동안이를 향해 밀어 넣었습니다 서비스. 그 후 Apache 및 Nginx와 같은 Twitter 및 서버 제조업체는 지원, Node.js 및 나중에 Facebook, WordPress.com 및 대부분의 CDN 제공 업체를 제공했습니다. SPDY는 단일 TCP 연결을 통해 여러 리소스를 병렬로 제공합니다. 연결은 기본적으로 암호화되고 데이터가 압축됩니다. 첫째, SPDY 백서에서 처음 25 개의 웹 사이트의 예비 테스트에 따르면 속도가 27% 이상 60% 이상 증가한 것으로 나타났습니다.

생산 환경에서의 효과를 입증 한 후 SPDY 버전 3은 2015 년 하이퍼 텍스트 전송 프로토콜의 실무 그룹 인 HTTPBIS가 개발 한 첫 번째 초안 HTTP/2의 기초가되었습니다.

http/2는 다음과 같이 프로토콜의 첫 번째 버전을 괴롭히는 지연 문제를 해결하도록 설계되었습니다. 압축 http 헤더 서버 푸시 구현 단일 연결에서의 멀티플렉싱 요청

는 또한 정면 차단 문제를 해결하도록 설계되었습니다. 이진 형식으로 전송하고 효율성을 향상 시키며 기본적으로 암호화가 필요합니다 (또는 적어도 주류 브라우저에서 부과하는 요구 사항).

헤드 압축은 HPACK 알고리즘을 사용하여 수행되며 SPDY의 취약점을 해결하고 웹 요청의 크기를 반으로 줄입니다.

서버 푸시는 낭비 된 대기 시간을 해결하도록 설계된 기능 중 하나입니다. 브라우저가 요청하기 전에 브라우저 서버에 리소스를 제공합니다. 이로 인해 왕복 시간이 줄어들어 웹 사이트 최적화의 주요 병목 현상이됩니다.

이러한 모든 개선으로 인해 HTTP/2가 가져온로드 시차는 ImageKit.io의 예 페이지에서 볼 수 있습니다.

로드 타임이 절약 될수록 웹 사이트 리소스가 더 명백합니다.

웹 사이트가 HTTP/2를 통해 리소스를 제공하는지 확인하는 방법 :

Firefox 또는 Chrome과 같은 주류 브라우저에서 "네트워크"탭을 열고 리소스 목록 위의 스트라이프를 마우스 오른쪽 단추로 클릭하여 Inspector Tool의 HTTP/2 프로토콜에 대한 웹 사이트의 지원을 확인할 수 있습니다. 여기서는 "프로토콜"항목을 활성화 할 수 있습니다.
  • 서버 측 구현 : 이 ​​글을 쓰는 시점에서 모든 주류 브라우저는 HTTP/2를 지원하지만 모든 HTTP/2 요청이 필요하지만 HTTP/2 사양 자체에는 암호화가 필요하지 않습니다.
  • 서버 Apache 2.4는 Mod_http2 모듈을 통해이를 지원하며, 이제 생산 준비가되어 있어야합니다. Apache는 -enable-http2 매개 변수를 ./configure 명령에 추가하여 빌드해야합니다. 또한 libnghttp2 라이브러리의 최소 1.2.1 버전이 설치되어 있는지 확인해야합니다. 시스템에 찾기 어려운 경우-with-nghttp2 =
  • 를 추가하여 ./configure 로의 경로를 제공 할 수 있습니다.
다음 단계는 Apache의 구성에 지침을 추가하여 모듈을로드하는 것입니다.
<code>LoadModule http2_module modules/mod_http2.so</code>
로그인 후 복사
그런 다음 그런 다음 가상 호스트 블록에 프로토콜 H2 H2C HTTP/1.1을 추가하고 서버를 다시로드합니다. Apache의 문서화는 HTTP/2 : 를 활성화 할 때 예방 조치에 대해 경고합니다.

Apache 서버에서 HTTP/2를 활성화하면 리소스 소비에 영향을 미치며 바쁜 사이트가 있으면 그 영향을 신중하게 고려할 수 있습니다.

http/2가 활성화되면 가장 먼저 주목해야 할 것은 서버 프로세스가 추가 스레드를 시작한다는 것입니다. 그 이유는 HTTP/2가 처리를 위해 자체 작업자 스레드에 수신하는 모든 요청을 손에 넣고 결과를 수집하여 클라이언트에게 스트리밍하기 때문입니다.

Apache 구성에 대한 자세한 내용은 여기를 참조하십시오.

nginx는 버전 1.9.5 이후 http/2를 지원했으며

http2

매개 변수를 가상 호스트 사양에 추가하여 활성화 할 수 있습니다.
그런 다음 nginx를 다시로드하십시오.

불행히도,이 글을 쓰는 시점에서 서버 푸시는 공식적으로 구현되지 않았지만 개발 로드맵에 추가되었으며 내년에 출시 될 예정입니다. 더 모험적인 사람들의 경우 HTTP/2 서버 푸시에 대한 지원을 추가하는 비공식 NGINX 모듈이 있습니다. litespeed 및 OpenLitespeed는 또한 HTTP/2를 지원하는 것을 자랑합니다. 서버 측에서 HTTP/2를 활성화하기 전의 참고 사항은 SSL 지원이 있는지 확인하는 것입니다. 이는 위에서 언급 한 모든 가상 호스트 코드 스 니펫 (Apache 및 Nginx)은 가상 호스트 블록의 SSL 버전을 입력하고 포트 443을 듣습니다. Apache 또는 Nginx가 설치되고 일반 가상 호스트를 구성하고 LetSencrypt SSL 인증서를 얻고 주요 Linux 배포에 설치하는 것은 몇 줄의 코드의 문제가되어야합니다. CertBot은 전체 프로세스를 자동화하는 명령 줄 도구입니다.

요약 :

이 기사에서는 신흥 2 세대 웹 프로토콜 사양 인 HTTP/2를 간단히 설명합니다. 새로운 세대의 HTTP 구현 목록은 여기에서 찾을 수 있습니다. 기술에 대해 잘 모르는 사람들의 경우,이 새로운 프로토콜로 전환하는 바로 가기는 CDN이 HTTP/2를 채택한 최초의 공급 업체 중 하나이기 때문에 웹 스택에서 CDN을 단순히 구현하는 것일 수 있습니다.

<code>server {
    listen 443 ssl http2 default_server;

    ssl_certificate    server.crt;
    ssl_certificate_key server.key;</code>
로그인 후 복사
http/2 faq :

(FAQ 부품은 이전 출력과 매우 복제되어 있기 때문에 여기서 생략됩니다)

위 내용은 HTTP/2 : 배경, 성능 이점 및 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿