본문으로 건너뛰기
yceffort
PostsSeriesTagsAbout🧪 Research
EN

Tweaks

theme
accent palette
film grain
minimal mode
BACK TO INDEX
◆ ESSAY
--min
--year
KOoriginal

mailMail icongithubtwitter
yceffort
•
© 2026
•
https://yceffort.kr
BACK TO INDEX
◆ ESSAY

크롬에서 자바스크립트 로딩 순서

avatar
yceffort
2020-10-20 · 4분
4min
2020year
KOoriginal
web-performancejavascriptbrowser

브라우저가 어떻게 스크립트를 스케쥴링 하고 실행하느냐에 따라서 웹페이지 성능에 큰 영향을 미친다. <script defer /> <link rel=preload> 등등 스크립트 로딩에 영향을 미치는 다양한 기술들이 있으며 이러한 기술을 브라우저에서 어떤 순서로 처리하는지 이해하는 것도 중요하다.

Table of Contents

  • <head /> 안에 있는 <script />
    • 로딩 우선 순위
    • 실행 우선 순위
  • 사용처
    • 예
  • <link rel=preload + <script async> 또는 <script type=module async />
    • 로딩 우선 순위
    • 실행 우선 순위
    • 사용처
    • 예
  • <script async />
    • 로딩 우선 순위
    • 실행 우선 순위
    • 사용처
  • <script defer />
    • 로딩 우선 순위
    • 실행 우선 순위
    • 사용처
    • 예
  • <body /> 최하단에 있는 <script />
    • 로딩 우선 순위
    • 실행 우선 순위
    • 사용처
  • <body /> 최하단에 있는 <script defer />
    • 로딩 우선 순위
    • 실행 우선 순위
    • 사용처
    • 예
  • <link rel=prefetch /> + <script/>
    • 로딩 우선 순위
    • 실행 우선 순위
    • 사용처
    • 예
  • 마치며

<head /> 안에 있는 <script />

로딩 우선 순위

중간, 높음

실행 우선 순위

매우높음, 파서 실행을 멈춤

사용처

  • First Meaningful Paint, First Contentful Paint 컨텐츠
  • 다른 스크립트 이전에 실행해야 되는 스크립트

예

  • 프레임워크 런타임 (정적 렌더링이 아닌 경우)
  • 폴리필
  • 전체 페이지 DOM 구조에 영향을 미치는 A/B 테스트

<link rel=preload + <script async> 또는 <script type=module async />

로딩 우선 순위

중간, 높음

실행 우선 순위

높음, 파서 실행을 방해함

사용처

  • 중요한 컨텐츠를 만드는 스크립트 (First Meaningful Paint)
  • 그러나 페이지 상단 (above-the-fold)에는 영향을 미치지 않는 요소
  • 동적으로 컨텐츠를 넣기 위해 네트워크 fetch를 실행하는 스크립트
  • imports한 요소들이 모두 fetch된 이후 즉시 실행되어야 하는 스크립트는, <script async type=module />

예

  • <canvas /> 에 그려야 하는 것

<script async />

로딩 우선 순위

제일 낮음, 낮음

실행 우선 순위

높음, 파서를 방해함

사용처

사용할 때 주의 해야 한다. (https://calendar.perfplanet.com/2016/prefer-defer-over-async/) 요즘 들어 중요하지 않은 스크립트를 로딩 할 때 많이 사용하고 있지만, 로딩 우선순위만 낮을 뿐 실행 우선순위는 높다는 것을 기억해야 한다.

<script defer />

로딩 우선 순위

제일 낮음, 낮음

실행 우선 순위

매우 낮음, <body /> 최하단에 있는 <script />가 실행된 이후에 실행

사용처

  • 중요하지 않은 컨텐츠를 만드는 스크립트
  • 페이지 방문자의 50% 이상정도가 사용하는 중요한 상호작용 기능

예

  • 광고
  • 프레임 워크 런타임 (클라이언트 또는 서버사이드 렌더링)

<body /> 최하단에 있는 <script />

로딩 우선 순위

중간, 높음

실행 우선 순위

낮음, 파서의 작업이 끝나기를 기다림

사용처

이 방법은 생각만큼 낮은 우선순위로 실행되지 않는다.

<body /> 최하단에 있는 <script defer />

로딩 우선 순위

가장 낮음, 낮음, 큐의 모든 작업이 끝난 후에 실행됨.

실행 우선 순위

매우 낮음. <body /> 최하단에 있는 <script /> 보다도 낮음.

사용처

  • 사용자들이 가끔 사용하는 상호작용 기능

예

  • '연관된 기사들' 같은 컨텐츠 (중요도가 낮은)
  • '피드백을 주세요' 같은 기능들 (역시 중요도가 낮은)

<link rel=prefetch /> + <script/>

로딩 우선 순위

작업이 없을 때, 가장낮음

실행 우선 순위

스크립트가 어떻게 작동하느냐에 따라 다름.

사용처

다음 페이지 탐색을 위한 중요한 기능을 제공하는 스크립트

예

  • 다음 라우팅을 위한 자바스크립트 번들

마치며

  • 브라우저 별로 동작이 통일되어 있지 않으므로 사용할 때 주의를 필요로 한다.
  • 크롬에서 스크립트 우선순위를 알아내기 위해서는 네트워크 탭에서 Priority를 보면된다.

출처: https://addyosmani.com/blog/script-priorities/

관련 글

  • #web-performance#javascript#browser

    웹 페이지에서의 자바스크립트 메모리 사용량 벤치마킹

    분석할 때 마다 한숨이 나오는 그것

    2021-08-07·13분
  • #browser#web-performance#javascript

    Intersection Observer

    ## Intersection Observer Intersection Observer는 엘리먼트가 viewport에 노출되고 있는지 여부를 확인해주는 API다. 간단히 말해 브라우저의 어떤 요소가 화면에 노출되고 있는지 안되고 있는지를 확인해주는 라이브러리라고 생각하면 될 것 같다. 이 라이브러리가 없이 엘리먼트가 노출중인지 확인하려면 어떻게 해야할까? 이...

    2019-06-24·4분
  • ◆ 서비스 워커 캐싱 딥다이브
    #web-performance#service-worker#pwa

    서비스 워커 캐싱의 동작 원리: 프록시, 라이프사이클, 다섯 가지 전략

    서비스 워커는 사이트와 네트워크 사이에 선 프로그래밍 가능한 프록시다. 어디에 서 있는가, 캐시는 왜 썩는가, 배포했는데 왜 옛 버전이 보이는가, 무엇을 어떤 전략으로 담는가, 그래서 이걸 써야 하는가. 실무에서 마주치는 다섯 개의 질문을 붙잡고, opaque 응답이 104KB에서 6.6MB로 집계되는 실측과 상태 전이의 세부까지 내려간다. 『프런트엔드 성능 최적화 Deep Dive』의 캐시 장에서 못 다한 일반론이다. 서비스 워커 캐싱 딥다이브 시리즈의 첫 편이다.

    2026-08-12·39분
  • #javascript#frontend#web-performance

    IntersectionObserver 싱글톤 패턴과 WeakMap으로 메모리 누수 방지하기

    수백 개의 요소를 효율적으로 관찰하면서 메모리 누수도 방지하는 방법

    2026-01-17·20분

새 글을 놓치고 싶지 않으시다면 RSS로 구독해 주세요.

RSS 구독 →

yceffort — 프론트엔드 엔지니어입니다.

← Back to the blogIssue on GitHub →