[서버운영] Apache mod_gzip 압축
인터넷정보2007. 12. 22. 11:12
출력을 버퍼링하는 ob_start()에 대해서 팁텍에서도 여러번 논의가 있었던 것으로 기억합니다.
특히 ob_start("ob_gzhandler");
를 이용하면 테이터를 gzip 압축을 해서 훨씬 빨라질거라는 이야기도 있었고...
저역시 ob_start("ob_gzhandler"); 해주고 압축이 잘되고 있다고 믿어왔습니다.
근데 우연히 http://www.whatsmyip.org/mod_gzip_test/ 에서 테스트를 해보니까 압축이 안되어있다고 나오더군요.
한참을 뒤지다가 Apache/1 에서는 별도로 mod_gzip을 설정해야한다는 사실을 알았습니다.
화일을 다운로드하고 설정하는 방법은 http://schroepl.net/projekte/mod_gzip/install.htm 에 자세히 나와있습니다.
소스를 다운 받아서 압축을 풀고
make
make install 하면 됩니다.
make중 에러가 난다면 Makefile 화일을 열어서
APXS=your_apxs_pathname 부분을 수정해주셔야합니다.
설치가 되면
php.ini 화일에
LoadModule gzip_module libexec/mod_gzip.so
AddModule mod_gzip.c
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_can_negotiate Yes
mod_gzip_static_suffix .gz
AddEncoding gzip .gz
mod_gzip_update_static No
mod_gzip_command_version '/mod_gzip_status'
mod_gzip_keep_workfiles No
mod_gzip_minimum_file_size 500
mod_gzip_maximum_file_size 500000
mod_gzip_maximum_inmem_size 60000
mod_gzip_min_http 1000
mod_gzip_handle_methods GET POST
mod_gzip_item_exclude reqheader "User-agent: Mozilla/4.0[678]"
mod_gzip_item_include file \.html$
mod_gzip_item_exclude file \.js$
mod_gzip_item_exclude file \.css$
mod_gzip_item_include file \.pl$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/html$
mod_gzip_item_include mime ^text/plain$
mod_gzip_item_include mime ^httpd/unix-directory$
mod_gzip_dechunk Yes
LogFormat "%h %l %u %t \"%V %r\" %<s %b mod_gzip: %{mod_gzip_result}n In:%{mod_gzip_input_size}n -< Out:%{mod_gzip_output_size}n = %{mod_gzip_compression_ratio}n pct." common_with_mod_gzip_info2
CustomLog logs/mod_gzip.log common_with_mod_gzip_info2
mod_gzip_add_header_count Yes
mod_gzip_send_vary On
</IfModule>
를 추가해줍니다.
아파치를 재가동하고
http://www.whatsmyip.org/mod_gzip_test/ 에서 다시 테스트를 해보니 드디어 제대로 압축이 된 것을 확인할 수 있었습니다.
apache 1.x 에서는 mod_gzip이 설정되고 페이지에 ob_start("ob_gzhandler"); 가 있어야 압축이 됩니다.
ob_start("ob_gzhandler");가 들어있지 않은 페이지는 압축이 일어나지 않습니다.
apache 2.x에서는
ob_start("ob_gzhandler");를 하면 페이지가 먹통이 됩니다.
아파치 2.x에서는 mod_deflate를 설정해주셔야합니다.
송효진님이 이미 한번 언급을 하셨더군요.
http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=56751&sca=&sfl=wr_subject%7C%7Cwr_content&stx=mod_deflate&sop=and
송효진님처럼
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-javascript text/css
하셔도 되고
<Location />
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png|rar|zip|gz|tar|exe)$ no-gz
<IfModule mod_headers.c>
Header append Vary User-Agent env=!dont-vary
</IfModule>
</IfModule>
</Location>
하셔도 됩니다.
2.x에서는 ob_start("ob_gzhandler"); 와 상관없이 모든 페이지에서 작동합니다.
apache 1.x에서 mod_gzip만 사용해도 압축할 수 있습니다. 설정파일에서 mod_gzip_item_include mime ^application/x-httpd-php만 지정하면 모든 php 파일이 압축되어 전달됩니다. 물론 다른 유형의 파일도 지정할 수 있습니다.
특히 ob_start("ob_gzhandler");
를 이용하면 테이터를 gzip 압축을 해서 훨씬 빨라질거라는 이야기도 있었고...
저역시 ob_start("ob_gzhandler"); 해주고 압축이 잘되고 있다고 믿어왔습니다.
근데 우연히 http://www.whatsmyip.org/mod_gzip_test/ 에서 테스트를 해보니까 압축이 안되어있다고 나오더군요.
한참을 뒤지다가 Apache/1 에서는 별도로 mod_gzip을 설정해야한다는 사실을 알았습니다.
화일을 다운로드하고 설정하는 방법은 http://schroepl.net/projekte/mod_gzip/install.htm 에 자세히 나와있습니다.
소스를 다운 받아서 압축을 풀고
make
make install 하면 됩니다.
make중 에러가 난다면 Makefile 화일을 열어서
APXS=your_apxs_pathname 부분을 수정해주셔야합니다.
설치가 되면
php.ini 화일에
LoadModule gzip_module libexec/mod_gzip.so
AddModule mod_gzip.c
<IfModule mod_gzip.c>
mod_gzip_on Yes
mod_gzip_can_negotiate Yes
mod_gzip_static_suffix .gz
AddEncoding gzip .gz
mod_gzip_update_static No
mod_gzip_command_version '/mod_gzip_status'
mod_gzip_keep_workfiles No
mod_gzip_minimum_file_size 500
mod_gzip_maximum_file_size 500000
mod_gzip_maximum_inmem_size 60000
mod_gzip_min_http 1000
mod_gzip_handle_methods GET POST
mod_gzip_item_exclude reqheader "User-agent: Mozilla/4.0[678]"
mod_gzip_item_include file \.html$
mod_gzip_item_exclude file \.js$
mod_gzip_item_exclude file \.css$
mod_gzip_item_include file \.pl$
mod_gzip_item_include handler ^cgi-script$
mod_gzip_item_include mime ^text/html$
mod_gzip_item_include mime ^text/plain$
mod_gzip_item_include mime ^httpd/unix-directory$
mod_gzip_dechunk Yes
LogFormat "%h %l %u %t \"%V %r\" %<s %b mod_gzip: %{mod_gzip_result}n In:%{mod_gzip_input_size}n -< Out:%{mod_gzip_output_size}n = %{mod_gzip_compression_ratio}n pct." common_with_mod_gzip_info2
CustomLog logs/mod_gzip.log common_with_mod_gzip_info2
mod_gzip_add_header_count Yes
mod_gzip_send_vary On
</IfModule>
를 추가해줍니다.
아파치를 재가동하고
http://www.whatsmyip.org/mod_gzip_test/ 에서 다시 테스트를 해보니 드디어 제대로 압축이 된 것을 확인할 수 있었습니다.
apache 1.x 에서는 mod_gzip이 설정되고 페이지에 ob_start("ob_gzhandler"); 가 있어야 압축이 됩니다.
ob_start("ob_gzhandler");가 들어있지 않은 페이지는 압축이 일어나지 않습니다.
apache 2.x에서는
ob_start("ob_gzhandler");를 하면 페이지가 먹통이 됩니다.
아파치 2.x에서는 mod_deflate를 설정해주셔야합니다.
송효진님이 이미 한번 언급을 하셨더군요.
http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=56751&sca=&sfl=wr_subject%7C%7Cwr_content&stx=mod_deflate&sop=and
송효진님처럼
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-javascript text/css
하셔도 되고
<Location />
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4.0[678] no-gzip
BrowserMatch bMSIE !no-gzip !gzip-only-text/html
SetEnvIfNoCase Request_URI .(?:gif|jpe?g|png|rar|zip|gz|tar|exe)$ no-gz
<IfModule mod_headers.c>
Header append Vary User-Agent env=!dont-vary
</IfModule>
</IfModule>
</Location>
하셔도 됩니다.
2.x에서는 ob_start("ob_gzhandler"); 와 상관없이 모든 페이지에서 작동합니다.
apache 1.x에서 mod_gzip만 사용해도 압축할 수 있습니다. 설정파일에서 mod_gzip_item_include mime ^application/x-httpd-php만 지정하면 모든 php 파일이 압축되어 전달됩니다. 물론 다른 유형의 파일도 지정할 수 있습니다.
'인터넷정보' 카테고리의 다른 글
문자열 1바이트씩 배열에 담기 (0) | 2007.12.27 |
---|---|
백단표,구구단표, 십구단표, 19단 외 각종 유용한 정보 모음... (0) | 2007.12.22 |
[함수] 어설픈 GD 사용 EZBtn ??? (0) | 2007.12.22 |
PHP Shorthand If / Else Examples (0) | 2007.12.22 |
cron을 사용하지않고 화일 캐쉬 (0) | 2007.12.22 |
[스크립트] 스크립트만으로 움직이는 막대 Chart 그래프 (0) | 2007.12.19 |
[스크립트] 드래그 & 드롭 객체 Drag (0) | 2007.12.19 |
문자열 더할 때 속도 비교 (0) | 2007.12.13 |
INPUT label - 인풋 라벨태그 (0) | 2007.12.13 |
웹서버에 부하없는.. 실시간 상담용 채팅프로그램 , AJAX (0) | 2007.12.04 |