Как включить сжатие gzip на Heroku Cedar (Python / Flask / Gunicorn) - PullRequest
13 голосов
/ 07 октября 2011

Как включить сжатие GZIP в новом стеке Heroku Cedar? Это прямо с их сайта :

Поскольку запросы к приложениям Cedar отправляются непосредственно на сервер приложений, а не через прокси-сервер через HTTP-сервер, такой как nginx, любое сжатие ответов должно выполняться внутри вашего приложения. Для приложений Rack это может быть достигнуто с помощью промежуточного программного обеспечения Rack :: Deflater. Для сжатых статических ресурсов убедитесь, что Rack :: Deflater загружен до ActionDispatch :: Static в вашем стеке промежуточного программного обеспечения.

Если я правильно читаю, мой код приложения Python теперь отвечает за сжатие ответов? Как мне сжимать мои статические активы (например, css / js)? Я использую Flask и GUnicorn.

Ответы [ 2 ]

6 голосов
/ 21 октября 2011

Вам просто нужно промежуточное программное обеспечение wsgi, которое передает ответ.См. Сжатие всего HTTP-трафика с помощью Pyramid или http://librelist.com/browser//flask/2010/6/14/gzip-compression/

.
1 голос
/ 28 июля 2013

В соответствии со спецификацией WSGI , опубликованной в 2003 году, приложения не должны распаковывать ответы, а оставлять их на сервере (предположительно, Apache, работающий в стиле CGI).

приложения и промежуточное ПО не должны применять какие-либо виды Transfer-Encoding к своим выходным данным, такие как чанкинг или gzipping; в качестве операций «переход за переходом» эти кодировки являются областью реального веб-сервера / шлюза.

Но сегодня, в 2013 году, приложение часто является сервером. WSGI этого не ожидал. Это проблема, согласно http://www.b -list.org / weblog / 2009 / aug / 10 / wsgi /

Любопытная настойчивость WSGI по совместимости с CGI также означает, что здесь, в 2009 году, мир веб-разработки на Python еще не смог значительно улучшить модель прикладного программирования 1997 года.

...