웹페이지를 개발하다 보면 이러저러한 개체에 대해 브라우저가 서버에 HTTP 요청을 정말 할까하고 궁금한 경우가 있다. 예를 들어 display: none; 스타일을 줘서 보이지 않는 이미지도 서버에서 받아올까 하는 궁금증이다.

일전에 이러한 궁금증에 대한 다양한 사례를 퀴즈로 풀어보는 외국 사이트가 떠서 나도 좀 풀어봤다(이 사이트는 프로그램적으로도 참신하게 잘 만든 사이트다. 꼭 크롬에서 보기 바란다). 무지 어려웠다. W3C의 HTML이나 CSS 명세서에 없는 사항인 경우도 있고 브라우저마다 실제 구현도 다른데 그걸 어떻게 많이 맞추겠나.

그래서 문제 풀기보다 정리하는 게 낫겠다 싶어 여기 정리해봤다. 퀴즈 제공자인 Jake님에게 감사하면서 보기로 하자. :)

보이지 않게 처리된 이미지

보이지 않는 이미지는 브라우저가 다운로드를 할까, 안 할까?

자바스크립트로 이미지를 로딩하는 경우

자바스크립트(JavaScript)로 이미지를 로딩하는 경우는 브라우저가 다운로드를 할까? 안 할까?

웹브라우저에서 JavaScript는 단일 스레드이므로 이벤트 하나에서 개체를 넣었다가(예: appendChild) 바로 제거하는 경우는(예: removeChild) 결과적으로 문서에 삽입된 적이 없게 되므로 역시 다운로드되지 않는다. 그러나 한 스레드더라도 제거하기 전에 innerHTML을 호출하면 IE는 다운로드하며 offsetWidth를 호출하면 다른 브라우저도 다운로드한다.

<script> 요소

<script> 태그 사용시 어떤 경우에 자바스크립트가 로딩되지 않을까?

<link> 요소

<link> 태그를 자바스크립트로 삽입하면 어떻게 될까?

<iframe> 요소

이 이후의 내용은 상당히 특수한 경우라고 생각되므로 더 이상 정리해 싣지는 않겠다. 위의 내용만으로도 많은 공부가 되리라고 생각된다.