코드 도구
이 세 도구는 소스를 해석하고, 다시 쓰고, 그대로 출력합니다. 절대 하지 않는 일은 소스를 실행하는 것입니다. 이 구분이 여기서 말하는 안전 모델의 전부이며, 문장으로 약속하는 대신 코드로 강제합니다.
많이 쓰는 도구
코드는 해석될 뿐, 실행되지 않습니다
최소화 도구는 소스를 이해해야 하고, 이는 소스를 구문 트리로 해석한 뒤 그 트리를 다시 출력한다는 뜻입니다. 무언가를 실행해 볼 필요는 없으며, 이 도구도 그렇게 하지 않습니다. eval도, 동적 Function도, 스크립트를 실행하는 미리보기도 없습니다.
이 점은 SVG에서 가장 중요합니다. SVG는 실행 가능한 문서라서 스크립트, 이벤트 핸들러, javascript: URL을 담을 수 있습니다. 이들은 모두 두 번 제거됩니다. 한 번은 최적화 도구 자체의 규칙으로, 그다음 한 번은 뒤이어 실행되는 독립된 단계로 제거합니다. 버그 하나 있는 필터 하나는 안전 모델이 될 수 없기 때문입니다.
최소화로 실제로 줄어드는 것
공백을 없애고 지역 이름을 짧게 줄이면 보통 원본 소스의 3분의 1 정도가 줄어듭니다. 나머지 이득은 대부분 최소화 도구가 아니라 서버의 압축에서 나오므로, 현실적인 비교 대상은 원본 바이트 수가 아니라 최소화한 뒤 gzip으로 압축한 파일입니다.
@import는 그대로 둡니다
CSS의 @import는 텍스트로 그대로 두거나, 요청하면 제거합니다. 그 주소를 따라가는 일은 없습니다. 가리키는 대상을 가져온다는 것은 사용자가 붙여 넣은 파일 때문에 이 페이지가 대신 요청을 보낸다는 뜻이고, 이는 이 사이트의 나머지 부분이 하지 않도록 만들어진 바로 그 일이기 때문입니다.