2010-01-08 6 views
6

google.codes를 사용하여 내 css 및 js 파일을 빠르게 축소합니다. 나는 내 CSS와 js 파일에서 수축을 사용하기 위해 .htaccess를 설정했다. 그 이유는 코드에서 다른 js 파일을 참조하는 일부 js 파일 (shadowbox 및 tinymce와 같은)을 사용하기 때문이다. 그래서 내가 아파치와 함께 압축하고있어 또한 gzip으로 일부 js와 CSS 파일을 압축 - 내가 처음으로 gzipping (minify)하고 zlib (수축) 다시 통해 실행됩니다 오버 헤드를 만드는 오전. 또는 아파치는 헤더에서 minify로 설정된 속성을 갖는 이미 gzipped 파일을 무시합니다. 누구나이 경험이 있습니까?수축과 축소의 결합 - 오버 헤드가 발생합니까?

+0

정말 좋은 질문입니다! 대답은 무엇인지 모르겠지만 Minify의 저자는 토론 그룹에서 매우 반응이 좋습니다. https://groups.google.com/group/minify – Annie

답변

5

축소 및 수축/gzipping은 잘 작동합니다.

mod 재 작성을 사용하여 모든 CSS/js 파일을 원래 버전과 .css.gz/.js.gz 버전으로 미리 빌드했습니다.

브라우저는 .js/.css 요청을 보내고 서버는 .js.gz/.css.gz의 존재 여부를 확인하고 특정 조건이 일치하면 gzipped 콘텐츠를 반환합니다.

그래서이

RewriteEngine On 
RewriteBase/

#Check for browser's Accept-Encoding, 
RewriteCond "%{HTTP:Accept-Encoding}" "gzip.*deflate|deflate.*gzip" 

#check file name is endswith css or js 
RewriteCond %{REQUEST_FILENAME} "\.(css|js)$" 

#check existance of .gz file name 
RewriteCond %{REQUEST_FILENAME}.gz -s 

#rewrite it to .js.gz or .css.gz 
RewriteRule ^.*$ %{REQUEST_URI}.gz [L] 

#update some response header 
<FilesMatch "\.js\.gz$"> 
    AddEncoding gzip .gz 
    ForceType "text/javascript" 
</FilesMatch> 

<FilesMatch "\.css\.gz$"> 
    AddEncoding gzip .gz 
    ForceType "text/css" 
</FilesMatch> 
+0

감사합니다! 거기에 훌륭한 스크립트가 있습니다! 하지만 도구 축소 (일반적으로 축소하지 않음) Google에서 실제로 압축 및 압축 파일을 보냅니다 및 다음 다시 서버 부분 (아파치 deflate 즉석에서) 할 것이라고 알고 있습니다. 그리고 그것을 두 번 할 때 나는 오버 헤드를 만들고 있는지 궁금해하고 있었다. ..? 미안해 내가 분명하지 않다면 ... –

+0

이중 gzipping을 의미합니까? 나는 브라우저가 2 번 압축을 풀 필요성을 알지 못할 것이기 때문에 그렇게하지 않을 것이라고 생각한다. – YOU

1

gzip 같은,

기본적으로 (예를 들어 당신의 쉐도우 또는 TinyMCE에 대한) JS에서 즉시로드 JS/CSS 파일에 대한 문제가되지 않는다는 zlib 압축 알고리즘을 사용하여 , 대부분의 바이트 시퀀스는 두 번째로 잘 압축되지 않습니다.

+0

오, 나는 gzip이 zlib 라이브러리를 사용하는지 몰랐다. 나는 그것이 gzip과 deflate의 차이라고 생각했다. gzip 라이브러리를 사용하고 zlib 라이브러리를 사용하여 압축을 푸십시오. 그러나 문제는 파일이 두 배로 압축 될 것인가? 훨씬 작아지지 않을 것이라고 확신하지만, 클라이언트는 먼저 서버에 대해 deflatet을 압축 해제 한 다음 축소 된 파일을 압축 해제해야합니다. 거기에 오버 헤드가 있어야합니다 ..? –

+3

이미 작아지지 않을 것이라는 것을 이미 알고 있다면 왜 그럴까요? :) –

1

Minify은 Apache를 통해 파일을 제공하지 않으므로 이중 인코딩이 필요하지 않습니다.

DEFLATE 필터를 사용하면 Apache는 매번 요청한 파일을 gzip으로 압축합니다. 첫 번째 요청에서 파일을 gzips로 축소 한 다음 나중에 요청할 수 있도록 미리 압축 된 캐시 된 버전을 보냅니다.

PHP 기반이므로 유연성과 관리 용이성을 위해 성능을 제공하지만 프록시 캐시를 앞에두면 S.Mark의 구성뿐 아니라 성능도 향상됩니다.

관련 문제