2010-03-11 2 views
4

짝수 스택 오버플로는 compress their HTML이 아닙니다. HTML을 압축하는 것이 좋습니다? 내가 본 것까지 그것은 looks like Google is the only one .... (출처보기). 왜이 표준 관행이 아닌가?누가 HTML을 압축합니까?

+1

참조를 http://stackoverflow.com/questions/1306792/why-minify-assets-and-not- the-markup 및 http://stackoverflow.com/questions/2359484/why-do-many-sites-minify-css-and-javascript-but-not-html-closed –

+0

비슷한 질문이 너무 빨리 나오는 것을 어떻게 알 수 있습니까? ?! –

+0

내가 주로 생각하는 검색 키워드를 선택하는 것이 좋습니다. "HTML 축소"를 검색하면 그가 참조한 모든 링크를 찾을 수 있습니다. –

답변

12

HTML의 소형화과 GZIP 압축을 혼동하고 있다고 생각합니다. 후자는 매우 일반적입니다 (예 : Apache에서 mod_gzip 사용, here). 대부분의 경우 충분해야합니다. 그것은 서버와 브라우저 사이에 완전히 내부적이며, 소스 코드에서 볼 수 없습니다. 저장된 바이트의 트래픽 절감 달러의 수만을 의미 할 수있는

는 HTML의

실제 축소를이 사이트를 제외하고 정말 가치가 없다 (구글처럼.)

+0

참조 할 수있는 링크가 있습니까? –

+1

@viatropos yup : 여기 다른 기사 : http://www.linuxjournal.com/article/6802 –

+0

미니 파일링은 또한 훔치거나 리버스 엔지니어링하는 것을 어렵게 만듭니다. –

0

나는 소수의 사람들이한다고 생각합니다. 너무 많은 작업, 너무 작은 이득, esepcailly HTTP의 유료 하중으로 압축 될 수 요즘.

+0

내가 배울 수 있도록 링크가 있습니까? –

+0

축소 및 gzip 압축은 상호 배타적이지 않습니다. –

+0

물론 이죠, 그렇다고해서 제가 minification - bytecode가 현명하지 못하다는 것을 의미합니다. 많은 웹 사이트의 경우 단순히 노력할만한 가치가 없습니다. – TomTom

0

Gzip 압축하는 모든 현대적인 웹 서버와 웹 서버가 HTML 압축 (축소)을 쓸모 없거나 거의 중요하지 않게 만듭니다.

이렇게 거의 사용하지 않습니다.

+1

-1 : [표창장 필요] ... IE6에서도 gzip으로 압축 된 JavaScript 지원 ... gzip으로 압축 된 JavaScript를 지원하지 않는 브라우저를 ... (gzip을 지원하지 않는 브라우저는 제외 : t Accept-Encoding : gzip'을 사용하여 식별하고 처리하기 쉽습니다.) –

+0

@Andrew, 이것을 제거했습니다. 나는 그런 표창장을 실제로 가지고 있지 않다. 심지어 너도 JS 사역이 HTML보다 훨씬 더 많이 인기가있다. – Artyom

1

코드를 축소하지 않는 또 하나의 이유는 학습을위한 것입니다. 나는 사람들의 소스 코드를 통해 그들이 어떻게 문제를 해결하는지 살펴보고 다른 사람들이 내 모습을 볼 수 있도록 완전한 형태로 소스를 유지하는 능력을 좋아한다. 아직 브라우저에 전송되기 전에 gzip으로 압축 된 코드가 있지만 도착하면 완전한 형식으로 압축되지 않고 완전히 읽을 수 있습니다.

2

HTML 축소는 그만큼 Stackoverflow에 중요하지 않습니다. FrontPage의 HTML 소스를 기반으로 약간의 테스트를 수행했습니다.

 
Raw content length: 207454 bytes 
Gzipped content length: 30915 bytes 
Trimmed content length: 176354 bytes 
Trimmed and gzipped content length: 29658 bytes 

는 SO 이미 (실제로, HTML의 축소를, 또는 당신이 그것을 호출 으로 "HTML 압축") 응답 당 대역폭 1킬로바이트 주위에 "전용"절약 할 수 있으므로 공백을 트리밍, GZIP 압축을 사용합니다. 하루에 1 백만 페이지 뷰가 넘는 거인들에게는 HTML 축소가 이미 1GB 당 하루 대역폭을 절약 할 수 있습니다 (실제로 SO는 그만큼 절약 할 수 있습니다). Google은 하루에 수십억 개의 페이지 뷰를 제공하며 차이가있는 모든 바이트는 하루에 기가 바이트를 저장합니다.

FWIW, 나는 그것을 테스트하기 위해 간단한 quick'n'dirty Java 응용 프로그램을 사용 :

package com.stackoverflow.q2424952; 

import java.io.BufferedReader; 
import java.io.ByteArrayInputStream; 
import java.io.ByteArrayOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.URL; 
import java.util.zip.GZIPOutputStream; 

public class Test { 

    public static void main(String... args) throws IOException { 
     InputStream input = new URL("http://stackoverflow.com").openStream(); 
     byte[] raw = raw(input); 
     System.out.println("Raw content length: " + raw.length + " bytes"); 
     byte[] gzipped = gzip(new ByteArrayInputStream(raw)); 
     System.out.println("Gzipped content length: " + gzipped.length + " bytes"); 
     byte[] trimmed = trim(new ByteArrayInputStream(raw)); 
     System.out.println("Trimmed content length: " + trimmed.length + " bytes"); 
     byte[] trimmedAndGzipped = gzip(new ByteArrayInputStream(trimmed)); 
     System.out.println("Trimmed and gzipped content length: " + trimmedAndGzipped.length + " bytes"); 
    } 

    public static byte[] raw(InputStream input) throws IOException { 
     ByteArrayOutputStream output = new ByteArrayOutputStream(); 
     for (int data; (data = input.read()) != -1; output.write(data)); 
     input.close(); output.close(); return output.toByteArray(); 
    } 

    public static byte[] gzip(InputStream input) throws IOException { 
     ByteArrayOutputStream output = new ByteArrayOutputStream(); 
     GZIPOutputStream gzip = new GZIPOutputStream(output); 
     for (int data; (data = input.read()) != -1; gzip.write(data)); 
     input.close(); gzip.close(); return output.toByteArray(); 
    } 

    public static byte[] trim(InputStream input) throws IOException { 
     ByteArrayOutputStream output = new ByteArrayOutputStream(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(input)); 
     for (String line; (line = reader.readLine()) != null;) output.write(line.trim().getBytes()); 
     reader.close(); output.close(); return output.toByteArray(); 
    } 

} 
관련 문제