축소는 핵심 웹 성능 습관입니다. 기계가 무시하는 문자를 제거하여 HTML, CSS 및 JavaScript를 더 적은 바이트로 다운로드하고 구문 분석합니다. 주석과 공백을 제거하는 등 세 가지 아이디어 모두 동일하게 들리지만 안전 규칙, 위험 및 장점은 많이 다릅니다. HTML 태그 사이의 공백을 축소하는 것은 저렴하고 위험도가 낮습니다. CSS 내부의 공백을 제거하려면 calc() 및 미디어 쿼리에 주의가 필요합니다. JavaScript는 자동 세미콜론 삽입, 문자열 및 정규 표현식으로 인해 단순 압축 시 중단될 수 있습니다. 이 가이드에서는 HTML, CSS, JavaScript 축소를 나란히 비교합니다. 즉, 각각 제거되는 항목, 일반적으로 절약되는 금액, 문제가 발생하는 부분, 두 항목을 하나로 묶는 작업 흐름, HTML, CSS, JS 및 JSON용 무료 도구Minify 축소 프로그램입니다.
빠른 답변
언어별로 전용 축소기를 사용하세요. HTML: 주석을 제거하고 태그 간 공백을 축소합니다(스크립트, 스타일, 사전 또는 텍스트 영역을 건드리지 마세요). CSS: 문자열, url(), calc() 및 미디어 쿼리를 보호하면서 주석을 제거하고 공백을 줄입니다. JavaScript: 작은 조각에는 공백만 사용하는 것이 좋습니다. 프로덕션 앱 번들에는 이름 바꾸기 및 데드 코드 제거를 위해 Terser, esbuild 또는 SWC와 같은 파서 기반 도구가 필요합니다. 항상 도구를 형식에 일치시키십시오. 한 언어의 축소기를 다른 언어에서 실행하지 마십시오.
축소란 무엇입니까?
축소는 소스를 여전히 동일하게 동작하는 가장 작은 형태로 다시 작성합니다. 주석, 들여쓰기, 빈 줄 및 많은 공백은 사람이 쉽게 읽을 수 있도록 존재합니다. 브라우저와 파서는 필요하지 않습니다. 올바르게 축소된 파일은 동일한 페이지를 렌더링하고, 동일한 스타일을 적용하고, 동일한 스크립트를 실행합니다. 읽기 가능한 복사본을 소스 제어에 유지하고 프로덕션 단계에서 축소합니다.
축소는 gzip 또는 Brotli와 동일하지 않습니다. 이는 전송 중인 바이트를 압축하고 압축 해제가 필요합니다. 먼저(텍스트 레이어)를 축소한 다음 서버가 압축하도록 합니다(전송 레이어) - 스택됩니다. 이 사이트의 모든 무료 축소기에 대한 클러스터 개요는 JSON, HTML, CSS 및 JavaScript 축소기 가이드를 참조하세요.
HTML 축소 세부 사항
HTML은 중요한 경로에 있습니다. 브라우저는 CSS, 스크립트 및 이미지를 발견하기 전에 문서를 다운로드하고 구문 분석해야 합니다. 일반적으로 안전한 HTML 축소:
- HTML 주석을 제거합니다(필요한 경우 IE 조건부 주석을 유지하는 경우가 많습니다).
- 들여쓰기, 탭, 빈 줄 등 태그 사이의 공백을 축소합니다.
- 보이는 텍스트 내용을 변경하지 않고 태그 주위의 불필요한 공간을 자릅니다.
- 요소 구조, 속성 및 렌더링된 콘텐츠를 변경하지 않고 그대로 둡니다.
주요 위험은 보호 지역 내에서 지나치게 공격적인 벗겨짐입니다. <pre>와 <textarea> 안의 공백은 내용입니다. <script> 및 <style> 내부의 공백과 줄 바꿈은 HTML 축소기가 아닌 JS 및 CSS에 속합니다. HTML Minifier와 같은 보수적인 도구는 해당 블록을 그대로 두고 저장된 바이트를 표시합니다. 더 깊은 성능 측면(LCP, TTFB, gzip)에 대해서는 더 빠른 페이지 로드를 위해 HTML을 축소하는 방법을 참조하세요.
HTML 위험 요약
주석 및 태그 간 공백으로 제한되면 위험이 낮습니다. 축소기가 스크립트, 스타일, 사전 또는 텍스트 영역 내용을 다시 작성하는 경우 위험이 높습니다. 인라인 JS 및 CSS는 마크업으로 분쇄되지 않고 전용 축소기에 전달되어야 합니다.
CSS 축소 세부 사항
CSS는 종종 렌더링을 차단합니다. 브라우저는 스타일시트가 준비될 때까지 첫 번째 페인트를 지연할 수 있습니다. 안전한 CSS 축소는 일반적으로 다음과 같습니다.
- /* 블록 주석 */과 중괄호, 콜론, 세미콜론 주위의 불필요한 공백을 제거합니다.
- 선택기와 선언을 유효한 상태로 유지하면서 빈 줄과 들여쓰기를 축소합니다.
- 자산 참조가 그대로 유지되도록 인용된 문자열과 url() 경로를 유지합니다.
- calc()(+ 및 - 주위)와 미디어 쿼리 괄호 앞에 의미 있는 공백을 유지합니다.
CSS 축소는 위험도가 중간입니다. 대부분의 스타일시트는 깔끔하게 축소되지만 부주의한 도구는 calc(), 속성 선택기 또는 @media 규칙을 위반합니다. 사용되지 않는 CSS 제거(PurgeCSS 및 유사)는 공백만 저장하는 것보다 더 많은 것을 절약할 수 있는 별도의 단계입니다. 데드 규칙을 삭제한 후 남은 부분을 최소화합니다. 배포 전 안전한 주석 및 공백 정리를 위해 CSS 축소기를 사용하세요.
CSS 위험 요약
위험도는 보통입니다. 문자열, url(), calc() 간격 및 미디어 쿼리 구문을 보호합니다. 축소를 사용하지 않는 선택기를 제거하는 것과 혼동하지 마십시오. 이는 자체적인 거짓 긍정 위험이 있는 다른 최적화입니다.
JavaScript 축소 세부 사항
JavaScript는 축소가 HTML 및 CSS와 가장 많이 다른 부분입니다. 두 가지 계층이 있습니다.
1. 공백/주석 축소(스니펫에 안전함)
기본 JS 축소기는 문자열 리터럴, 템플릿 리터럴 및 정규식을 보호하면서 // 및 /* */ 주석을 제거하고 들여쓰기를 축소합니다. ASI(자동 세미콜론 삽입)가 계속 작동하도록 명령문 사이에 줄 바꿈을 유지해야 합니다. 이는 작은 인라인 스크립트, 요점, 이메일 또는 랜딩 페이지 스니펫에 이상적입니다. ToolsMinify의 JavaScript Minifier는 빠르고 비공개이며 의도적으로 보수적인 도구입니다.
2. 파서 기반 축소(실제 앱에 필요)
프로덕션 애플리케이션 번들에는 Terser, esbuild, SWC 또는 번들러에 내장된 축소 기능과 같은 실제 JavaScript 파서가 필요합니다. 이러한 도구는 AST를 이해하므로 지역 변수의 이름을 안전하게 바꾸고, 연결할 수 없는 코드를 삭제하고, 상수를 접을 수 있습니다. 공백 전용 축소는 이미 구조화된 소스에서 10-30%를 능가하는 경우가 거의 없습니다. 파서 기반 도구는 전체 앱에서 훨씬 더 많은 작업을 수행하는 경우가 많습니다. 순진한 "모든 공백 삭제" 스크립트는 ASI, 정규식 리터럴 및 템플릿 문자열을 손상시킵니다. 이것이 바로 고급 JS 축소가 정규식 작업이 아닌 이유입니다.
JS 위험 요약
제대로 수행되지 않으면 세 가지 중 위험이 가장 높습니다. 스니펫에는 공백이 없는 도구를 사용하세요. 프로덕션 번들 빌드에 Terser, esbuild 또는 SWC를 사용하세요. JS 구문을 이해하지 못하는 도구에 앱 코드를 붙여넣지 마세요.
비용 절감 비교: HTML vs CSS vs JS
원시 크기 감소는 소스의 들여쓰기 및 주석 처리 정도에 따라 달라집니다. 공백/주석 축소의 일반적인 범위:
- HTML: CMS 내보내기, 이메일 템플릿 및 들여쓰기가 깊은 페이지에서는 종종 15-40%입니다. 이미 컴팩트한 마크업에서는 더 적습니다.
- CSS: 댓글과 서식만으로 10~30%가 소요되는 경우가 많습니다. 사용하지 않는 규칙을 먼저 제거한 다음 축소하면 더 큰 승리를 거둘 수 있습니다.
- JavaScript(공백만 해당): 주석이 달린 들여쓰기된 조각에서 10-25%인 경우가 많습니다. Terser/esbuild가 포함된 프로덕션 번들은 일반적으로 이름 변경 및 데드 코드 제거를 통해 훨씬 더 큰 삭감을 볼 수 있습니다.
압축을 기억하세요. gzip과 Brotli는 이미 반복되는 공간을 압축하므로 축소만으로 네트워크를 통한 이득은 원시 바이트 델타보다 작습니다. 축소는 메모리, 캐시 및 저장소에서 압축되지 않은 크기를 여전히 축소하고 압축기의 작업량을 줄입니다. 둘 다 사용하세요.
나란히: 무엇이 다른가
- HTML은 마크업 주석과 태그 사이의 공백을 제거합니다. 스크립트, 스타일, 사전 또는 텍스트 영역을 건드리지 않아야 합니다.
- CSS는 스타일시트 주석을 제거하고 구문 공백을 강화합니다. 문자열, url(), calc() 및 @media를 보호해야 합니다.
- JS는 코드 주석과 들여쓰기를 제거합니다. 문자열, 템플릿 및 정규식을 보호해야 하며 공백 전용 도구에 대해 ASI 안전 줄 바꿈을 유지해야 합니다.
- HTML과 CSS는 일반적으로 온라인의 안전한 공백 도구에서 멈춥니다. JS 앱에는 CI 또는 번들러에 파서(Terser/esbuild/SWC)가 필요합니다.
- JSON은 네 번째 사례입니다. JSON 축소기 및 포맷터를 사용하여 압축적으로 구문 분석하고 다시 문자열화하여 축소합니다.
권장되는 축소 작업 흐름
- 소스 제어에서 작성자가 읽을 수 있고 주석이 달린 HTML, CSS 및 JS - 축소된 출력을 직접 편집하지 마십시오.
- 자체 도구(또는 빌드 플러그인)를 사용하여 각 형식을 축소합니다. CSS에서 HTML 축소기를 실행하거나 JS에서 CSS 축소기를 실행하지 마세요.
- HTML 페이지 및 템플릿의 경우: HTML 축소기를 마지막으로 실행합니다. 해당 블록이 중요한 경우 인라인 CSS/JS를 별도로 축소하세요.
- 스타일시트의 경우: 적절한 경우 사용되지 않는 규칙을 삭제한 다음 배포하기 전에 CSS 축소기를 실행하세요.
- 애플리케이션 JavaScript의 경우: esbuild, Vite, webpack, Terser 또는 SWC에서 축소를 활성화합니다. 작은 조각에만 브라우저 JS 축소기를 사용하세요.
- 서버나 CDN에서 gzip 또는 Brotli를 활성화하면 축소된 자산이 네트워크에서 압축됩니다.
- 각 도구의 바이트 저장 판독값을 확인하여 파일이 파이프라인에 연결될 가치가 있는지 확인하세요.
경험 법칙
인간을 위한 형식, 기계를 위한 축소. 언어당 하나의 도구입니다. HTML/CSS/스니펫용 공백 축소기; 프로덕션 JavaScript 번들을 위한 파서 기반 축소.
ToolsMinify의 무료 축소기
아래의 모든 도구는 브라우저에서 완전히 실행됩니다. 무료이며 가입이나 업로드가 필요하지 않습니다.
- HTML 축소기 - 주석을 제거하고 태그 간 공백을 축소합니다. 스크립트, 스타일, 사전 및 텍스트 영역을 유지합니다.
- CSS 축소기 - 주석을 제거하고 공백을 줄입니다. 문자열, url(), calc() 및 미디어 쿼리를 보호합니다.
- 자바스크립트 축소기 - 스니펫을 위한 안전한 공백 축소; ASI 안전 줄 바꿈을 사용하여 문자열, 템플릿 및 정규식을 보존합니다.
- JSON 축소기 및 포맷터 - JSON을 한 줄로 축소하거나 2칸 들여쓰기로 아름답게 만듭니다. 진행되는 대로 확인합니다.
자주 묻는 질문
HTML, CSS, JS 축소는 같은 것인가요?
동일한 목표 - 더 작은 파일 - 다른 규칙. 각 언어에는 선택적으로 보이지만 그렇지 않은 문자가 있습니다. 안전한 공백 및 주석 제거로 인해 마크업, 스타일 또는 스크립트가 손상되지 않도록 형식별로 전용 축소기를 사용하세요.
하나의 도구로 HTML, CSS, JavaScript를 함께 축소할 수 있나요?
별도의 도구를 선호합니다. HTML 축소기는 인라인 스크립트와 스타일만 남겨 두어야 합니다. 해당 블록에는 CSS 및 JS 축소기가 필요합니다. 형식을 별도로 유지하는 것이 출력을 안전하게 유지하는 것입니다.
브라우저 JavaScript 축소기는 프로덕션에 충분합니까?
작은 인라인 스크립트의 경우 그렇습니다. 실제 애플리케이션 번들의 경우에는 Terser, esbuild, SWC 또는 번들러의 축소 옵션을 사용하지 마십시오. 그러면 변수 이름을 바꾸고 데드 코드를 제거할 수 있습니다. 공백 전용 도구는 CI의 JS 파서를 대체할 수 없습니다.
축소 시 가장 많은 비용을 절감할 수 있는 형식은 무엇입니까?
소스가 얼마나 부풀어 올랐는지에 따라 다릅니다. 넉넉하게 들여쓰기된 HTML과 주석이 달린 CSS는 종종 높은 승률을 보입니다. 대규모 JS 앱은 공백만으로는 아닌 파서 기반 축소기가 실행될 때만 가장 큰 절대적인 승리를 볼 수 있습니다.
여전히 gzip이나 Brotli가 필요합니까?
예. 텍스트를 축소한 다음 와이어를 압축합니다. 그들은 서로 다른 레이어에서 작동하고 잘 쌓입니다.
어디서부터 시작해야 할까요?
다음에 출시할 형식부터 시작하세요. 페이지를 HTML 축소기에 붙여넣고, 스타일시트를 CSS 축소기에 붙여넣거나, 스니펫을 자바스크립트 축소기에 붙여넣으세요. API 페이로드의 경우 JSON Minifier & Formatter를 사용하세요.
비교 및 축소 - 무료
무료 HTML 축소기를 열어 마크업을 축소한 다음 CSS 축소기 및 JavaScript 축소기와 페어링하세요. 각각은 가입이나 업로드 없이 브라우저에서 실행되며, 저장한 바이트 수를 정확하게 보여줍니다.