HTML 축소? [닫은]


99

페이지 의 HTML 소스를 입력 하고 코드를 축소 할 수있는 온라인 도구가 있습니까?

웹 서버를 gzip으로 만드는 것이 좋지 않기 때문에 aspx 파일에 대해 그렇게 할 것입니다 ...


19
서버 gzip을 사용하는 것이 언제 나쁜 생각입니까?
Chuck

5
aspx 페이지는 정적 파일이 아니기 때문에 IIS에 의해 캐시되지 않으므로 모든 요청에 ​​대해 페이지를 gzip합니다 ...
Paulo

23
... 그게 문제입니까? 서버가 이미 99.9 % CPU에 있지 않다면 아마 아닐 것입니다. gzipping은 일반적인 작업이며 '최소화'보다 훨씬 효과적입니다.
bobince


2
여기에 대한 답변은 구식이며 일부가 잘못되었습니다. 내 확인하시기 바랍니다 문제와 적절한 도구에 대한 설명을 .
Salvador Dali

답변:


63

아마도 HTML Compressor를 사용해보십시오 . 여기에 그것이 무엇을 할 수 있는지 보여주는 전후 표가 있습니다 (스택 오버플로 자체 포함) :

죄송합니다. 마크 다운에는 테이블 개념이 없습니다.

안전한 곳에서 스크립트 최소화 (ompressor, Google Closure Compiler, 자체 압축기)를 포함하여 페이지를 최적화하기위한 다양한 선택 기능을 제공합니다. 기본 옵션 세트는 매우 보수적이므로이 세트로 시작하여보다 적극적인 옵션을 사용하여 실험 할 수 있습니다.

이 프로젝트는 매우 잘 문서화되고 지원됩니다.


58

이러지 마세요 . 또는 오히려 당신이 그것을 주장한다면 더 중요한 사이트 최적화가 완료된 후에 수행하십시오. 특히 온라인 도구를 수동으로 사용하여 각 페이지를 처리 ​​할 계획 인 경우 이러한 노력에 대한 비용 / 혜택이 미미할 가능성이 매우 높습니다 .

사용 YSlow에 또는 페이지 속도는 당신이 무엇을 결정하기 위해 정말 페이지를 최적화 할 필요가있다. 내 생각에 HTML의 바이트를 줄이는 것이 사이트의 가장 큰 문제가 아니라는 것입니다. 압축, 캐시 관리, 이미지 최적화 등이 사이트 전체의 성능에 더 큰 차이를 만들 가능성이 훨씬 더 높습니다. 이러한 도구는 가장 큰 문제가 무엇인지 보여줄 것입니다. 모든 문제를 다뤘지만 여전히 HTML 축소가 상당한 차이를 만든다는 사실을 알게된다면 그렇게하세요.

(당신이 그것을 원하고 Apache httpd를 사용하는 것이 확실하다면, mod_pagespeed를 사용 하고 공백 등을 줄이기 위해 일부 옵션을 켜는 것을 고려할 수 있지만 위험을 인식 하십시오 .)


25
자동화 된 미화를 사용하여 최소화 된 코드를 쉽게 읽을 수 있다면 최적화에 어떤 문제가 있습니까?

12
아마도 가장 큰 문제는 아니지만 dev에서 qa 또는 prod로 컴파일 할 때 축소 정규식 집합을 통해 마크 업을 실행하는 사소한 프로세스라면 왜 더 작은 마크 업 문서를 보내지 않겠습니까?
Will Peavy

26
원래의 질문 :(에 실제로 응답
척 르 엉덩이

7
@Will, 정규식 축소를 통해 HTML을 실행하는 것은 사소한 프로세스가 아니며 적절한 파서를 사용하더라도 사소하거나 빠르지 않습니다. 또한 JS / CSS 축소와 달리 HTML 축소는 무손실이 아닙니다. 태그는으로 스타일을 지정할 수 있으며 white-space: pre축소는 미리 서식이 지정된 텍스트를 파괴합니다.
eyelidlessness의

3
@eyelidlessness-현재 제공되기 전에 정규식에 의해 축소 된 수천 페이지가 있습니다. 이 기능은 시스템의 복잡하거나 값 비싼 부분이 아닙니다. ... 반면에으로 스타일이 지정된 요소를 축소하지 않기 위해 계산 된 스타일을 구문 분석하려면 white-space:pre예, HTML 축소가 더 복잡 할 것입니다. 그러나 누군가가 preor code요소를 사용하는 대신 white-space : pre를 사용하려는 이유가 명확하지 않습니다 .
Will Peavy

34

다음은 귀하의 질문에 대한 간단한 대답 입니다. HTML, CSS, JS를 축소해야합니다 . grunt 라는 사용하기 쉬운 도구가 있습니다. 많은 작업을 자동화 할 수 있습니다. 그중에는 JS , CSS , HTML 축소, 파일 연결 등이 있습니다 .

여기에 작성된 답변은 매우 구식이거나 때로는 의미가 없습니다. 2009 년과는 많이 달라졌 기 때문에 제대로 답해 보도록하겠습니다.

짧은 대답- 확실히 HTML을 축소해야합니다 . 오늘날에는 사소한 일이며 약 5 %의 속도 향상을 제공 합니다. 더 긴 답변을 원하시면 전체 답변을 읽으십시오.

예전에는 사람들이 수동으로 css / js를 축소했습니다 (특정 도구를 통해 축소하여 실행). 프로세스를 자동화하는 것은 다소 어려웠고 확실히 약간의 기술이 필요했습니다. 지금도 많은 고수준 사이트가 gzip (사소한)을 사용하지 않는다는 것을 알면 사람들이 html 축소를 꺼리는 것이 이해가됩니다.

그렇다면 사람들은 왜 js를 축소했지만 html은 축소하지 않았 습니까? JS를 축소하면 다음 작업을 수행합니다.

  • 댓글 제거
  • 공백 제거 (탭, 공백, 개행)
  • 긴 이름을 짧은 ( var isUserLoggedIn~ var a)으로 변경

예전에도 많이 개선되었습니다. 그러나 html에서는 긴 이름을 짧게 변경할 수 없었고, 그 기간 동안 댓글을 작성할 것이 거의 없었습니다. 그래서 남은 것은 공백과 줄 바꿈을 제거하는 것뿐입니다. 약간의 개선 만 제공합니다.

여기에 쓰여진 한 가지 잘못된 주장은 콘텐츠가 gzip으로 제공되기 때문에 축소가 의미가 없다는 것입니다. 이것은 완전히 잘못된 것입니다. 예, gzip이 축소 개선을 감소 시킨다는 것은 이치에 맞지만, 주석, 공백을 적절하게 다듬고 중요한 부분 만 gzip해야하는 이유는 무엇입니까? 사용하지 않을 쓰레기가있는 보관 폴더가 있고 정리하고 압축하는 대신 압축하기로 결정한 것과 같습니다.

축소하는 것이 무의미한 또 다른 주장은 그것이 지루하다는 것입니다. 2009 년에 그랬을 지 모르지만,이 이후 새로운 도구가 등장했습니다. 지금은 마크 업을 수동으로 축소 할 필요가 없습니다. Grunt 와 같은 경우 grunt-contrib-htmlmin ( @kangax의 HTMLMinifier 에 의존) 을 설치 하고 HTML 을 축소하도록 구성하는 것은 간단합니다. 당신이 필요로하는 것은 단지 2 시간 정도의 시간이 필요합니다. 1 초 ( grunt-contrib-watch로 아무것도하지 않도록 자동화 할 수도 있음 )는 약 5 %의 개선 (gzip을 사용하더라도)에 그렇게 나쁘지 않은 것 같습니다.

또 하나의 주장은 CSS와 JS가 정 적이고 HTML은 서버에 의해 생성되므로 미리 축소 할 수 없다는 것입니다. 이는 2009 년 것도 사실 이었지만, 현재 더 많은 사이트 서버가 얇고 클라이언트가 모든 라우팅하는 주형 및 기타 로직을 수행하는 단일 페이지 응용 프로그램처럼 찾고 있습니다. 따라서 서버는 JSON 만 제공 하고 클라이언트는이를 렌더링합니다. 여기에 페이지와 다른 템플릿에 대한 많은 html이 있습니다.

그래서 내 생각을 끝내려면 :

  • Google은 html을 축소하고 있습니다.
  • pageSpeed 가 HTML을 축소 하도록 요청합니다.
  • 하는 것은 사소한 일이다
  • ~ 5 % 개선
  • gzip과 동일하지 않습니다.

3
HTML 에서 공백은 중요하고 주어진 공백을 제거 할 수 있는지 여부는 CSS에 따라 다르기 때문에 HTML을 축소하는 것은 결코 쉬운 일이 아닙니다 . 또한 씬 클라이언트는 끔찍하며 동적 HTML을 축소하는 문제에 대해 좋은 주장으로 간주 할 수 없습니다. (이를 수행하는 한 가지 좋은 방법은 처음에 렌더링 된 출력에 불필요한 공백을 포함하지 않는 템플릿 엔진 [Haml, Jade 등]을 선택하는 것입니다.)
Ry-

@minitech HTML을 축소하는 것은 사소한 일 이며 공백 (예 :)에 대해 가능한 문제가 거의 없습니다 <span>. 우선 유효한 html을 작성하는 방법을 항상 찾을 수 있으므로 공백에 구애받지 않습니다. 또한 듣고 놀라실 수도 있지만 JS / CSS minifier는 버그를 도입 할 수도 있습니다. 그렇다고해서 사용해서는 안된다는 의미는 아닙니다. 따라서 문제를 해결하는 두 가지 방법은 공백과 무관 한 마크 업을 작성하는 방법을 배우고, 축소 전 / 후에 제품을 테스트하는 것입니다 (CSS / HTML / JS). 또한 Minifier에서 보존하려는 공백을 지정할 수 있습니다.
Salvador Dali

비정상적인 코드 (즉, 자신을 읽지 않거나 타이밍에 따라 속이지 않는 코드)의 올바른 JavaScript minifier는 버그를 유발할 수 없습니다. 그리고 아니오, 공백에 구애받지 않는 HTML을 작성하는 방법이 항상있는 것은 아닙니다. 특히 HTML이 공백에 구애받지 않기 때문입니다. 조금도. 여백이 잘릴 것이라고 생각되면 복사 및 붙여 넣기를 테스트하십시오. ... 나는 시간 낭비처럼 소리를 유지하려면 공백 (구글을 제외하고) 무엇을 지정
Ry-

@minitech 공백에 구애받지 않는 방식으로 작성할 수없는 CSS를 보여줄 수 있습니까? 나는 오랫동안 html을 축소하고 있으며 지금까지 문제를 보지 못했습니다.
살바도르 달리

* { white-space: pre; }분명한 것이지만 공백을 모두 제거하고 축소 (대신 여백으로 대체)하는 것이 아니라면 텍스트가 잘못 복사되어 텍스트 브라우저와 화면 판독기에 혼란을 일으킬 수 있습니다.
Ry-

23

HTML을 축소하기 위해 웹 도구를 작성했습니다. http://prettydiff.com/?m=minify&html

이 도구는 다음 규칙을 사용하여 작동합니다.

  • 모든 HTML 주석이 제거됩니다.
  • 일련의 공백 문자는 단일 공백 ​​문자로 변환됩니다.
  • 태그 내부의 불필요한 공백 문자가 제거됩니다.
  • 두 태그 중 하나가 싱글 톤이 아닌 두 태그 사이의 공백 문자가 제거됩니다.
  • style태그 안의 모든 콘텐츠 는 CSS로 간주되며 축소됩니다.
  • script태그 내의 모든 콘텐츠 는 다른 미디어 유형이 제공되지 않는 한 자바 스크립트로 간주되며 그에 따라 축소됩니다.
    • CSS 및 JavaScript 축소는 크게 분기 된 JSMin 형식을 사용합니다. 이 포크는 CSS를 기본적으로 지원하고 SCSS 구문도 지원하도록 확장되었습니다. 자바 스크립트 축소를 위해 자동 세미콜론 삽입이 지원되지만 자동 중괄호 삽입은 아직 지원되지 않습니다.

    7
    안녕하세요,이 줄을 제거합니다! <!--[if IE 8.0]><link rel="stylesheet" href="css/ie8.css" type="text/css" /><![endif]-->
    UnLoCo 2012 년

    1
    예, ko를 사용한다면 이것은 재앙이 될 것입니다!
    Ray Suelzer 2013-04-05

    8

    이것은 나를 위해 일했습니다.

    http://minify.googlecode.com/git/min/lib/Minify/HTML.php

    이미 사용 가능한 온라인 도구는 아니지만 간단한 PHP 포함이므로 직접 실행할 수 있습니다.

    그래도 압축 파일을 저장하지 않고 꼭 필요한 경우 동적으로 수행하며 항상 Gzip 서버 압축을 활성화하는 것이 좋습니다. IIS / .Net에 얼마나 관여하는지 모르겠지만 PHP에서는 전역 포함 파일에 한 줄을 추가하는 것만 큼 간단합니다.


    6

    CodeProject에는 다음 상황 중 일부를 처리하기 위해 게시 된 샘플 프로젝트 ( http://www.codeproject.com/KB/aspnet/AspNetOptimizer.aspx?fid=1528916&df=90&mpp=25&noise=3&sort=Position&view=Quick&select=2794900 )가 있습니다. .

    • ScriptResource.axd 호출을 단일 호출로 결합
    • gzip / deflate를 포함한 브라우저 기능을 기반으로 모든 클라이언트 측 스크립트를 압축합니다.
    • 주석, 들여 쓰기 및 줄 바꿈을 제거하는 ScriptMinifier.
    • gzip / deflate를 포함한 브라우저 기능을 기반으로 모든 html 마크 업을 압축하는 HTML 압축기.
    • 그리고-가장 중요한 것은-완전한 html을 한 줄로 작성하고 가능한 수준에서 축소하는 HTML Minifier입니다 (건설 중).


    1

    http://code.mini-tips.com/html-minifier.html 시도해보십시오 . 이것은 Html Minifier 용 .NET 라이브러리입니다.

    HtmlCompressor는 콘텐츠 구조를 손상시키지 않고 추가 공백, 주석 및 기타 불필요한 문자를 제거하여 주어진 HTML 또는 XML 소스를 축소하는 작고 빠르고 사용하기 매우 쉬운 .NET 라이브러리입니다. 결과적으로 페이지 크기가 작아지고로드 속도가 빨라집니다. 컴프레서의 명령 줄 버전도 사용할 수 있습니다.

    당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
    Licensed under cc by-sa 3.0 with attribution required.