2009-09-28 6 views
4

미리 압축 모듈을 사용하여 미리 압축 된 .gz 버전의 페이지를 찾고 gzip을 허용하는 브라우저에 제공하면 즉석 압축의 오버 헤드를 피할 수 있습니다. 그러나 내가 원하는 것은 무엇입니까? 디스크에서 압축되지 않은 버전을 제거하고 압축 된 버전 만 저장합니다.이 방법은 분명히 같은 방식으로 제공되지만 gzip 요청을 지원하지 않는 사용자 에이전트가 nginx에서 압축을 풀고 싶은 페이지를 요청하면 그것을 전송하기 전에.nginx에서 on-the-fly uncompression으로 사전 압축을 수행하는 방법이 있습니까?

누구든지이 작업을 수행 했습니까? 아니면이 기능을 제공하는 다른 고성능 웹 서버가 있습니까?

답변

0

하나의 옵션은 파일을 압축 해제하는 fall-backupstream 서버를 가지고있다, 예를 들면 :

gzip_static on; 
... 
upstream decompresser { 
    server localhost:8080; // script which will decompress the file 
} 

location/{ 
    try_files $uri @decompress; 
} 

location @decompress { 
    proxy_pass http://decompresser; 
} 

또 다른 옵션은 오히려 상류보다 가을 백으로 embedded perl module을 사용하는 것입니다,하지만이 발생할 수의 nginx 작업을 잠시 중단하면 성능이 저하 될 수 있습니다.

업스트림 모델을 사용하면 시스템의 기본 gzip 프로그램을 사용하여 nginx의 XSendfile 모듈을 활용하여/tmp 디렉토리의 파일로 압축을 풀 수 있습니다. 이렇게하면 짧은 시간 동안 파일을 잠글 수 있으므로 요청 당 압축 해제 오버 헤드를 줄일 수 있습니다.

3

정적 사전 압축 gzipped 파일을 Nginx에 보내는 가장 좋은 방법은 http_gzip_static_module을 사용하는 것입니다. 보다 구체적으로 구성하면 다음과 같습니다.

gzip_static always;

http://nginx.org/en/docs/http/ngx_http_gzip_static_module.html

경우에만 IO에 저장하는 서버에 서 .gz 파일을 가지고, 당신은 http_gunzip_module을 사용하고자 할 파일 즉의 압축을 푼 버전을 제공 할 수 있어야합니다. 귀하의 설정에서 보면 다음과 같습니다 :

gunzip on;

http://nginx.org/en/docs/http/ngx_http_gunzip_module.html

는 또한 gunzip_module 페이지 하단의 링크에 관심이있을 수 있습니다.

P. Google Zopfli 압축 알고리즘을 사용하여 파일을 미리 압축하면 압축 해제 시간이 아니라 빌드 시간이 늘어나지 만 파일 크기는 약 5 % 감소합니다. https://code.google.com/p/zopfli/