Должен ли я использовать промежуточное ПО для сжатия GZIP или нет?
Работая с Django, я видел, что люди склонны рекомендовать использовать GZIP Middleware для сжатия HTML-страниц.
Однако спецификация WSGI v1.0 сообщает нам:
(Примечание: приложения и промежуточное программное обеспечение не должны применять любой тип Transfer-Encoding
к их выходу, например, chunking или gzipping, как операции "прыжок по ходу", эти кодировки являются провинцией фактического веб-сервера/шлюза. Подробнее см. Другие функции HTTP ниже.)
Это говорит о том, что сжатие должно быть оставлено на сервере/шлюзе. Это имеет смысл, поскольку сервер, вероятно, намного быстрее в этом. Кроме того, он может предпочесть SDCH по сравнению с gzip, как это делают большинство современных браузеров Chrome/Chromium.
Итак, мой вопрос остается, следует ли использовать промежуточное программное обеспечение для сжатия моих ответов или нет? В частности, какой правильный выбор для Google App Engine?
EDIT:
Книга Pylons также содержит пример промежуточного программного обеспечения gzip.
Я не упоминал, что мои рамки выбора Pyramid (ex-repoze.bfg).
Ответы
Ответ 1
App Engine уже сжимает содержимое, если клиент поддерживает его.
Если клиент отправляет HTTP-заголовки с запрос, указывающий, что клиент может принимать сжатые (gzipped) контента, App Engine сжимает ответные данные автоматически и придает соответствующий ответ заголовки. Он использует как Запрос Accept-Encoding и User-Agent заголовки, чтобы определить, может ли клиент надежно получать сжатые ответы. Пользовательские клиенты могут заставить контент быть сжимаются путем указания как Заголовки Accept-Encoding и User-Agent со значением "gzip".