Service Worker를 사용한 효율적인 폰트 캐싱

2025-09-04

이 코드 스니펫은 Service Worker가 어떻게 효율적으로 폰트 리소스를 캐싱하는지 보여줍니다. `CacheStorage`를 사용하여 폰트를 캐싱하고, 오래된 캐시가 간섭하는 것을 방지하기 위한 버전 관리 메커니즘을 포함합니다. 폰트가 요청되면 Service Worker는 먼저 캐시를 확인합니다. 적중하면 직접 반환됩니다. 적중하지 않으면 네트워크에서 폰트를 가져와 캐시에 추가합니다. 이때 네트워크 요청 오류도 처리됩니다. 코드는 리소스 소모 문제를 피하기 위해 `clone()` 메서드를 영리하게 사용합니다.

더 보기
개발

HTML `<template>` 요소 마스터하기: 선언적 Shadow DOM과 DocumentFragment 활용법

2025-09-03

이 글에서는 HTML `` 요소의 강력한 기능, 특히 선언적 Shadow DOM 생성을 위한 `shadowrootmode` 속성 사용법에 대해 자세히 설명합니다. `shadowrootmode`의 `open` 및 `closed` 값과 `shadowrootclonable`, `shadowrootdelegatesfocus`, `shadowrootserializable` 등의 속성 사용법을 자세히 다룹니다. 또한 `` 요소의 `content` 속성을 사용하여 DocumentFragment를 조작하는 방법과 DocumentFragment 사용 시 발생할 수 있는 문제를 효과적으로 회피하는 방법을 보여줍니다. 구체적인 코드 예시를 통해 DOM 요소의 동적 삽입 및 업데이트, 스타일 캡슐화 및 컴포넌트 기반 개발을 위한 Shadow DOM 활용 방법을 설명합니다.

더 보기
개발

프로그래밍에서의 디바운싱: 효율적인 사용자 입력 처리

2025-08-07
프로그래밍에서의 디바운싱: 효율적인 사용자 입력 처리

프로그래밍에서 디바운싱은 연속적인 사용자 입력과 같이 자주 발생하는 이벤트를 처리하기 위한 기법입니다. 지정된 시간 간격 내에 너무 가까이 발생하는 작업을 버리고 단일 호출로 통합하여 UI 지연을 방지합니다. 예를 들어 사용자가 검색 쿼리를 입력할 때 디바운싱은 검색을 실행하기 전에 일시 정지 상태를 기다려 효율성과 사용자 경험을 향상시킵니다. 스로틀링과 유사하지만 연속 작업의 빈도를 제한하는 스로틀링과 달리 디바운싱은 작동하기 전에 일정 기간의 비활성 상태를 기다립니다.

더 보기

MDN 생일: 케이크, 협업 그리고 커뮤니티

2025-07-25
MDN 생일: 케이크, 협업 그리고 커뮤니티

웹 세계에서 주요 이정표를 기념하기 위해 케이크를 주고받는 것은 브라우저 제작사들 사이에서 소중히 여겨지는 전통입니다. 마이크로소프트는 Firefox 출시를 기념하여 Mozilla에 케이크를 보낸 것으로 유명하며, 이제 web.dev는 MDN에 생일 케이크를 선물하여 전 세계 개발자 커뮤니티에 대한 MDN의 중요한 기여를 인정했습니다. 매달 수백만 명의 개발자에게 도달하고 10만 명 이상의 기여자를 보유한 MDN은 열정적인 커뮤니티에 감사를 표하며, 개발자 역량 강화와 더 나은 웹 구축을 위해 앞으로 20년 동안 활동을 지속할 것을 전망하고 있습니다.

더 보기
개발

CSS Paint Worklet: 배경 이미지 사용자 지정

2025-05-26
CSS Paint Worklet: 배경 이미지 사용자 지정

이 예제는 CSS Paint Worklet을 사용하여 동적인 배경 이미지를 만드는 방법을 보여줍니다. 사용자 지정 속성 `--boxColor` 및 `--widthSubtractor`를 정의하고 CSS `nth-of-type` 선택기를 사용하여 목록 항목에 다양한 색상과 너비의 배경 이미지를 생성합니다. JavaScript 코드는 배경 이미지를 그리는 로직이 포함된 외부 Paint Worklet 스크립트 `boxbg.js`를 등록합니다. 최종 결과는 사용자 지정이 가능합니다. 개발자 도구에서 사용자 지정 속성 값을 변경하여 색상과 너비를 변경할 수 있습니다.

더 보기

HTML의 암시적 제목 레벨 제거

2025-04-11
HTML의 암시적 제목 레벨 제거

HTML 사양은 이전에 섹션 요소(, , , ) 내 중첩을 기반으로

요소의 의미론적 제목 레벨을 암시적으로 결정하는 윤곽 알고리즘을 정의했습니다. 브라우저는 section > h1을

와 동일한 글꼴 크기와 여백으로 렌더링하고, section > section > h1을

로 렌더링하는 등의 방식으로 동작했습니다. 이 기본 렌더링은 브라우저의 UA 스타일시트에 있었지만, 접근성 트리(스크린 리더에서 사용)에는 없었습니다. 섹션 요소를 사용하는 웹사이트는 이러한 자동 생성된 제목 레벨을 예상치 못하게 보았습니다. 이로 인해

사용에 대한 혼란, 도구 처리의 불일치, 그리고 알고리즘 자체가 문제라는 것이 밝혀졌습니다. 이 알고리즘은 2022년에 제거되었지만, UA 스타일시트 규칙은 남아 있었습니다. 현재 브라우저 공급업체는 이러한 기본 스타일을 제거하고 있습니다.

더 보기
개발

글로벌 개인정보 보호 제어(GPC): 웹 추적 방지책인가?

2025-03-16
글로벌 개인정보 보호 제어(GPC): 웹 추적 방지책인가?

이전의 '추적 금지'(DNT)와 달리, 글로벌 개인정보 보호 제어(GPC) 신호는 캘리포니아 주 법무장관의 지지를 받고 있으며 EU의 GDPR과의 연동을 목표로 하여, 사용자에게 전례 없는 권한을 부여합니다. DNT의 비효율성은 법적 집행력 부족에서 기인했지만, GPC는 이를 바꿉니다. 사용자의 '판매 거부' 요청을 웹사이트에 전송하여 규정 준수를 강제합니다. Mozilla Firefox, Brave, DuckDuckGo 프라이버시 브라우저 등의 브라우저가 GPC를 지원하고 있으며, 웹 추적 방지의 전환점이 될 가능성을 시사합니다.

더 보기
기술 웹 추적

Temporal API: JavaScript의 날짜 및 시간 처리 혁신

2025-01-30
Temporal API: JavaScript의 날짜 및 시간 처리 혁신

Temporal API는 JavaScript에서 날짜 및 시간 조작을 간소화합니다. 중국 음력 등 다양한 달력 시스템을 지원하며, 시간대 변환을 매끄럽게 처리하고 직관적인 비교 메서드를 제공합니다. 예를 들어, 다음 중국 설날을 계산하거나 미래의 Unix 타임스탬프까지의 기간을 결정할 수 있습니다. `toLocaleString`의 동작은 브라우저 구현에 따라 약간 다르지만, Temporal API는 강력한 날짜 및 시간 연산을 제공하여 개발자에게 큰 도움이 됩니다.

더 보기
개발 날짜 시간

MDN 학습 리소스 대폭 개선: 새로운 학습 경험 출시

2024-12-25
MDN 학습 리소스 대폭 개선: 새로운 학습 경험 출시

2024년 12월, MDN은 "웹 개발 배우기" 섹션에 대한 주요 업데이트를 출시하여 MDN 커리큘럼과 기존 학습 콘텐츠를 통합하여 더욱 효율적인 학습 경로를 만들었습니다. 이 업데이트는 과도한 콘텐츠와 불명확한 학습 경로와 같은 이전의 문제를 해결하여 초보자에게 더욱 명확하고 접근하기 쉬운 경험을 제공하는 것을 목표로 합니다. "시작하기", "핵심", "확장" 세 가지 섹션으로 구성된 모듈식 구조를 채택하여 명확한 학습 목표와 인터랙티브한 콘텐츠를 포함하고 있습니다. MDN은 앞으로도 콘텐츠와 디자인을 개선하여 더욱 우수한 학습 리소스를 제공할 것입니다.

더 보기