2011-10-06 3 views
12

새로운 Heroku Cedar 스택에서 GZIP 압축을 어떻게 활성화 할 수 있습니까? 이것은 그들의 site에서 직선 :Heroku Cedar (Python/Flask/Gunicorn)에서 gzip 압축을 활성화하는 방법

삼나무 응용 프로그램에 대한 요청이 응용 프로그램 서버에 직접 때문에

- 응답의 압축 응용 프로그램 내에서 수행되어야합니다 - nginx를 같은 HTTP 서버를 통해 프록시 없습니다. Rack 앱의 경우 Rack :: Deflater 미들웨어를 사용하여 수행 할 수 있습니다. gzip으로 압축 된 정적 에셋의 경우, Rack :: Deflater가 미들웨어 스택에 ActionDispatch :: Static 앞에로드되어 있는지 확인하십시오.

올바르게 읽으면 파이썬 응용 프로그램 코드가 이제 응답을 gzipping해야합니까? 정적 애셋 (예 : css/js)을 압축하려면 어떻게해야합니까? 나는 플라스크와 GUnicorn를 사용하고 있습니다.

+1

아마 좋지는 않지만 확실하게 그들은 그것을 말하고 있습니다. python.org에서 gzip 사용에 관한 설명서가 있습니다. http://docs.python.org/library/gzip.html – gforcada

+0

여기에서 악마 옹호를하고 있습니다. 왜 gzip을 사용해야합니까? 당신은 Heroku에서 /에서 대역폭을 지불하지 않으므로 왜 압축해야합니까? –

+8

사용자가 1MB 대신 300KB의 페이지를로드하는 것을 선호하므로 압축해야합니다! –

답변

6

응답을 내 보내는 wsgi 미들웨어가 필요합니다. 2003에 공개 된 WSGI spec에 따르면 Gzipping all HTTP traffic with Pyramid 또는

+0

나는 위에서 언급 한 바와 같이 피라미드를 사용하지 않는다. 플라스크 링크는 완벽한 구현이 아닙니다. –

+1

피라미드와 플라스크 모두 wsgi 기반입니다. 플라스크 특정 미들웨어가 아닌 wsgi 미들웨어가 필요합니다. –

+1

다른 http://code.google.com/p/ibkon-wsgi-gzip-middleware/source/browse/trunk/gzip_middleware.py 및 다른 http://www.evanfosmark.com/2008/12/python- wsgi-middleware-for-automatic-gzipping/다시, 이것은 플라스크, gunicorn 또는 피라미드가 아닌 wsgi 미들웨어입니다. –

0

http://librelist.com/browser//flask/2010/6/14/gzip-compression/를 참조하십시오 앱은 응답을 gzip을 안하지만 (응용 프로그램의 CGI-stylee를 실행, 아파치로 추정) 서버에 떠날.

응용 프로그램 및 미들웨어는 청크 또는 gzipping과 같은 출력에 전송 인코딩을 적용해서는 안됩니다. "hop-by-hop"작업으로, 이러한 인코딩은 실제 웹 서버/게이트웨이의 영역입니다.

그러나 오늘 2013 년에 종종 이라는 앱은 서버가입니다. WSGI는 이것을 예상하지 못했습니다. 그것도 2009 년에, 파이썬 웹 개발 세계는 여전히 크게 1997의 응용 프로그램 프로그래밍 모델을 개선 할 수 없었다 여기에 있다는 것을 의미 CGI와의 호환성에 http://www.b-list.org/weblog/2009/aug/10/wsgi/

WSGI의 호기심 주장에 따르면, 문제입니다.

관련 문제