2012-04-15 5 views
1

나는 minifier가 이것으로 시작하면 어떤 메소드 나 프로퍼티도 대체하지 않기 때문에 prototypical javascript로 그 좋은 것을 수행하지 않는다는 것을 알았다. 예를 들어 :javascript optimization and minification vs gzipping

// unoptimized 182 bytes 
myClass.prototype.myFunction = function(){ 
    this.myElementDom.style.backgroundColor='#000'; 
    this.myElementDom.style.color='#FFF'; 
    this.myElementDom.style.borderColor='#DDD'; 
} 

// 168 bytes = 92% of unoptimized, YUI compressed 
myClass.prototype.myFunction=function(){this.myElementDom.style.backgroundColor="#000";this.myElementDom.style.color="#FFF";this.myElementDom.style.borderColor="#DDD"}; 

// optimized 214 bytes 
// set a replaceable local scope variable and reduce 2 variable 
// lookups at the same time 
// file-size in the development version doesn't matter, so we can even increase it 
// to preserve readability 
myClass.prototype.myFunction = function(){ 
    var myElementDomStyle = this.myElementDom.style 
    myElementDomStyle.backgroundColor='#000'; 
    myElementDomStyle.color='#FFF'; 
    myElementDomStyle.borderColor='#DDD'; 
} 

// 132 bytes = 72.53% of unoptimized, YUI compressed 
myClass.prototype.myFunction=function(){var a=this.myElementDom.style;a.backgroundColor="#000";a.color="#FFF";a.borderColor="#DDD"}; 

만세은 19.47 % 저장 ...하지 ... 활성화 GZIP으로 스크립트, 분명히 130 바이트 (= 최적화되지 않은에서 71.42 %)과 함께 최적화되지 않은, YUI 압축 된 버전의 부하를 게시 할 때하는 것은 얻는다 134 바이트 (최적화되지 않은 것에서 73.63 %)의 최적화 된 YUI 압축 버전보다 더 많은 절감 효과가 있습니다. 압축이 작동하는 방식을 생각한 후에 분명할지 모르지만 지금 갈 방법이 있습니까? 처음에는이 마이크로 최적화와 작은 압축을 사용하여 gzip으로 더 큰 파일 크기를 정당화 할 수 있습니다. 그런 최적화로 코드를 쉽게 읽고 관리하기 쉽도록 만들 수 있습니다. 그것으로 오지해야 http://refresh-sf.com/yui/

+0

google closure minifier를 사용할 수 있습니다. 또한'gzip' +'minify'는 여전히'gzip'보다 낫습니다. – kirilloid

+0

두 번째 예제는 공간 절약을 찾기보다 런타임에 DOM 조회를 줄이는 방법에 관한 것이 아닙니까? –

답변

1

코드의 가독성에 따라

모든 정보 - 당신은 프로덕션 서버에 축소에 유엔 - 축소 된 코드를 개발해야한다. 변수와 함수 이름을 미세하게 최적화하지 마십시오. 코드 가독성을 거의 희생시키지 않으므로 사용성 측면에서 거의 이득을 얻지 못할 것입니다. 한 번 다운로드하여 캐싱 할 파일의 몇 KB에 대해 이야기하고 있습니다.

축소 및 gzip 또는 gzip 중 어느 것이 더 작은 전체 파일 크기로 생성되는지 여부.

1

어떤 경우에도 182 바이트의 코드가 축소되거나 압축되지 않습니다. 축소는 코드의 다섯 줄에 16 바이트 만있는 공백을 제거하고 함수, 변수 및 속성 이름을 줄여서 작동합니다.이 경우 공백을 이유로이 작업을 수행 할 수 없습니다. 압축은 반복 된 시퀀스를 찾아 제거함으로써 작동합니다. 많은 반복을 찾기 위해 5 줄의 코드에 텍스트가 충분하지 않습니다.

50 줄 또는 100 줄 이상의 코드를 축소하고 압축하면 더 많은 결과를 볼 수 있습니다. 그리고 @ rgvcorley가 암시 하듯이, 개발 환경에서 코드를 읽고 유지 보수 할 수 있도록하는 데 중점을 두어야하며 파일 크기에 대한 세부 사항은 빌드 프로세스 및 웹 서버에 맡겨야합니다.

1

다른 것은 제외하지 않습니다. JS 파일 최소화 및 gzipping을 모두 수행 할 수 있습니다 (gzipping은 일반적으로 웹 서버 수준에서 발생 함). 나는 그것이 최상의 결과를 제공 할 것이라고 생각합니다. 큰 파일에서는 최소화 및 압축이 더 잘 수행됩니다. JS가 작은 내가 볼 것 만들기뿐만 아니라

: HTTP의 수를 줄이기 위해 하나 개의 축소 된 파일에 JS 파일을 병합

  1. 을 줄이기 위해 CDN에 JS 퍼팅 HTTP 캐싱 설정
  2. 최적화
  3. 요청 다운로드 시간
  4. 일부 공용 JS 라이브러리에 공개 CDN 사용 jQuery를, 다른 상황이 개선 될 수있는 것을보고 얻을 http://www.webpagetest.org/ 귀하의 웹 사이트를 확인 JS 파일과 HTML 페이지

의 끝을 추가 사용자의 로컬 캐시

  • 에서 촬영 될 가능성이 있으므로

    더 많은 정보를 원하시면 Reading High Performance Web Sites book을 권 해드립니다.몇 가지 간단한 변경으로도 페이지로드 시간이 크게 향상 될 수있는 방법에 대해서는 다루지 않습니다.

  • +0

    내 질문에 분명히 말하지 않았다고 생각합니다. 내 코드를 공개하지 않을 계획입니다. 나는 당신이 지적한 책을 현재 읽고있다. 그래서 나는 변수 조회를 줄이고 축소를 최적화하려고 노력했다 :-) –