Alexander Sheiko Blog

Apache2 mod_deflate

Категория: Компьютерное
Отправлено: 20.06.2005 21:00

Хочется рассказать об одном неприятном баге, присутствующем во втором апаче.

https://adsh.org.ua/blog/upload/apache_pb2_ani.gif

С тех пор, как в поставку сервера добавили mod_deflate, и до сего момента, за ним тянется следующий баг. Сервер выдаёт строку заголовка

Vary: Accept-Encoding


в любом случае, даже если строка

Content-Encoding: gzip


в его ответе отсутствует (ответ - несжатый).

Что при этом получается. На рынке браузеров лидирует ИЕ. Несжатые ответы с любым "Vary", но без "Content-Encondig" вообще не кэшируются MSIE. Т. е. - перестаёт работать кеширование в браузере.

Идём дальше. В большинстве случаев, при выполнении запроса через прокси сервер, MSIE 5.5 и выше, не передаёт в заголовке запроса строки "Accept-Encoding", т. к. опция "использовать HTTP 1.1 через прокси", по умолчанию, в настройках браузера отключена. Пусть несжатая статическая страница сохранена в кеше сквида или ещё какого прокси. Если в заголовке запросе ИЕ нет

Accept-Encoding: gzip


то эта страница не будет отдана из кеша прокси, т. к. для её отдачи поставлено условие - наличие в заголовке запроса "Accept-Encoding". Т. е. - перестаёт работать кеширование несжатой статики прокси сервером.

Что мы имеем. Полностью перестаёт работать кеширование страниц как браузером, так и прокси :o.

Как я это пофиксил:

# Do not sent Vary without Content-Encoding
SetEnvIf Accept-Encoding .* force-no-vary
SetEnvIf Accept-Encoding gzip !force-no-vary


Хочется верить, что когда нибудь, это пофиксят и разработчики самого апаче :p.

Подробнее о работе HTTP компрессии можно почитать на сайте Игоря Сысоева - разработчика mod_deflate для первого апача.
Постоянная ссылка Комментарии (0)
Powered by sBLOG XHTML 1.0 Strict PHP CSS
Локальное время: 29.03.2024 17:41 GMT+2
© 2005-2024 Alexander Sheiko