From fe5c8a6dcfef208ea476e0d92df23737b5d3fa56 Mon Sep 17 00:00:00 2001 From: seonghobae <8172694+seonghobae@users.noreply.github.com> Date: Sat, 18 Jul 2026 13:59:14 +0000 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=20Bolt:=20SVG=20=EB=B0=8F=20LCP=20?= =?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=EC=9D=98=20decoding=3Dasync=20?= =?UTF-8?q?=EC=86=8D=EC=84=B1=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .jules/bolt.md | 4 ++++ CHANGELOG.md | 1 + index.html | 9 ++++----- tests/test_styles.py | 4 +++- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/.jules/bolt.md b/.jules/bolt.md index c10fb9b..4d74e0f 100644 --- a/.jules/bolt.md +++ b/.jules/bolt.md @@ -12,3 +12,7 @@ ## 2026-07-10 - Remove unnecessary DOMPurify for performance **Learning:** 애플리케이션이 `textContent`와 같은 안전한 DOM API만 사용하고 `innerHTML` 등의 위험한 싱크를 사용하지 않는다면 DOMPurify와 같은 라이브러리를 통해 Trusted Types 정책을 생성할 필요가 없음. **Action:** 불필요한 번들 다운로드 및 스크립트 실행을 방지하기 위해 사용하지 않는 라이브러리를 식별하고 제거할 것. + +## 2024-07-18 - SVG 및 LCP 이미지의 decoding 속성 최적화 +**Learning:** SVG 이미지는 디코딩(decoding) 과정이 아니라 파싱(parsing) 과정을 거치므로 `decoding="async"` 속성이 무의미하며, LCP(Largest Contentful Paint) 이미지에 `fetchpriority="high"`와 함께 사용하면 중요 렌더링이 지연될 수 있는 안티 패턴이 됨을 학습함. +**Action:** 성능 최적화 시 `decoding="async"`는 오프스크린(off-screen) 또는 지연 로딩(lazy-loaded)되는 래스터 이미지에만 적용하고, SVG 이미지나 핵심 렌더링을 담당하는 LCP 이미지에는 적용하지 않도록 주의할 것. diff --git a/CHANGELOG.md b/CHANGELOG.md index 56ad628..5346c81 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,3 +12,4 @@ - **보안 개선**: `i18n.js`의 `setLanguage()` 함수에 허용된 언어인지 확인하는 입력값 검증(Input Validation) 로직을 추가하여 Prototype Pollution 및 유효하지 않은 상태 주입을 방지했습니다. - **성능 개선**: `i18n.js`에서 초기 로드 시 기본 언어가 한국어(ko)인 경우 불필요한 DOM 순회 및 텍스트 업데이트를 생략하도록 개선했습니다. - **테스트 추가**: 다국어 처리 로직의 무결성을 검증하기 위해 `test_i18n.html` 테스트 파일을 추가했습니다. +- **성능 개선**: SVG 및 LCP 이미지에서 불필요한 `decoding="async"` 속성을 제거하여 중요 렌더링 지연을 방지합니다. diff --git a/index.html b/index.html index c40fea3..29a71ea 100644 --- a/index.html +++ b/index.html @@ -29,7 +29,7 @@