웹 사이트의 페이지로드 시간을 최적화하고있었습니다. 방법 중 하나는 CSS에 대한 여러 HTTP 요청을 하나의 결합 된 HTTP 요청으로 결합하는 것입니다. 그러나 검토 자 중 한 명이 흥미로운 질문을했습니다. 여러 CSS 파일을 병렬로 다운로드해도 페이지로드 시간이 줄어들지 않습니까?
인터넷에서 읽은 유일한 것은 (블로킹) HTTP 요청 수를 줄이는 것이 더 빠른 웹 페이지의 핵심이라는 점입니다 (Google Pagespeed Insights 에서이 1 을 명확하게 언급하지는 않지만 ).
병렬화로 인해 성능이 향상되지 않거나 매우 적은 문제가 발생하는 몇 가지 이유를 알 수 있습니다 (HTTP 요청 수가 적을 때의 이점보다 중요).
- 새로운 연결을 설정하는 데 많은 비용이 듭니다. 여러 연결을 병렬로 설정할 수 있지만 브라우저는 브라우저에 따라 최대 4-6 개의 연결을 사용하므로 CSS를 병렬로 다운로드하면 JavaScript 및 이미지와 같은 다른 자산의 다운로드가 차단됩니다.
- HTTPS 연결을 설정하려면 추가 데이터가 필요합니다. 나는 이것이 쉽게 몇 KB의 데이터가 될 수 있다는 것을 읽었습니다. 이것은 실제로 보내려는 CSS 대신 유선으로 전송해야하는 추가 데이터입니다.
- TCP Slow Start 알고리즘으로 인해 연결을 통해 전송 된 데이터가 많을수록 연결 속도가 빨라집니다. 따라서 수명이 긴 연결은 실제로 새 연결보다 훨씬 더 빠르게 데이터를 전송합니다. 페이지로드 시간을 향상시키기 위해 단일 연결을 사용하는 SPDY 프로토콜을 참조하십시오.
- TCP는 추상화입니다. 기본 연결은 여전히 하나만 있습니다 (일반적으로). 따라서 여러 요청이 사용되는 동안 유선을 통해 전송되는 데이터는 속도를 향상시키기 위해 여러 연결의 이점을 전혀 얻지 못할 수도 있습니다.
- 인터넷 연결은 특히 모바일에서 본질적으로 신뢰할 수 없습니다. 한 요청이 다른 요청보다 훨씬 빠르게 완료 될 수 있습니다. CSS에 여러 요청을 사용하면 마지막 요청이 완료 될 때까지 웹 페이지 렌더링이 차단되며 이는 평균 연결보다 훨씬 늦을 수 있습니다.
CSS 파일에 대한 HTTP 요청을 병렬 처리 할 때 어떤 이점이 있습니까?
참고 / 업데이트 : 모든 CSS 파일은 렌더 차단입니다. 아직 중요 경로 외부로 이동되지 않은 CSS 파일