ac@eserv.ru
Блог
Общие папки
Проекты и группы
Контакты
Визитка
План
Программы
Настройки
ТемаОтДатаРазм
Яндекс посчитал почтовые службы на доменах рунетаsupport2012.10.10 18:581 Кб
Облачноеsupport2011.07.13 19:331 Кб
Android proxy - обещанного три года ждутsupport2011.06.17 17:090 Кб
Правильный протоколsupport2011.05.27 16:281 Кб
Гагарин. Made in USSR.ac2011.04.12 03:181 Кб
В домене .RU уже 3 млрд именsupport2011.04.09 06:161 Кб
Некрасов о Яндексеsupport2011.02.21 22:550 Кб
Назад к железуsupport2011.02.16 21:562 Кб
Android не smartsupport2010.11.15 00:461 Кб
Юбилей папки spamsupport2010.11.12 23:241 Кб
ВКонтакте внедряет Байесаac2010.08.26 18:231 Кб
Из жизни вирусовac2010.07.07 17:382 Кб
Imminet Protect переименовали в ClamAV for Windowsac2010.05.08 23:091 Кб
1 июля SQLite станет еще быстрееac2010.05.08 07:162 Кб
Thunderbird 3.1 beta2 улучшает поддержку Eservac2010.05.06 02:441 Кб
Eserv DNS-сервер принял первые доменыac2010.04.07 05:131 Кб
Berkeley DB 5 как убийца SQLite 3 ?ac2010.04.03 19:312 Кб
WinSock от меня усталsupport2010.03.30 20:300 Кб
acFilter или искусственный интеллект в кубеac2010.03.26 22:411 Кб
Как поломать Thunderbirdac2010.03.26 21:221 Кб
А по-немецки с лошадьмиsupport2010.03.23 00:061 Кб
Opera и русские X.509-сертификатыac2010.02.26 05:381 Кб
Загадка FileZilla 3.3.1ac2010.02.04 21:141 Кб
Firefox 3.5.6 поломал NTLMac2010.02.01 06:251 Кб
Обучение или дрессировкаac2010.01.11 16:210 Кб
Вышел Thunderbird 3.0ac2009.12.11 20:041 Кб
Нейробиология и обучение байесовsupport2009.12.06 06:130 Кб
Телефон против интернетаac2009.12.04 00:011 Кб
Голова профессора Доуэляac2009.11.14 22:011 Кб
IE8 самый быстрыйac2009.11.13 07:494 Кб
О доверии серверуac2009.11.02 17:131 Кб
IE8 и deflate content-encodingac2009.10.12 08:503 Кб
Культурный слойAndrey Cherezov2009.09.26 03:282 Кб
Как самостоятельно скомпилировать EservAndrey Cherezov2009.08.21 11:332 Кб
PHP и ISAPIAndrey Cherezov2009.08.21 00:321 Кб
Microsoft прячет VPNы от провайдеровAndrey Cherezov2009.08.10 18:222 Кб
Очень быстрая сеть или машина времениAndrey Cherezov2009.08.06 03:411 Кб
Главная статья про NATAndrey Cherezov2009.07.24 20:191 Кб
Тест на зрелость платформыAndrey Cherezov2009.07.10 20:031 Кб
Производительность CGI, FastCGI и ISAPI в acWEBAndrey Cherezov2009.05.31 09:363 Кб
FlashPlayer и deflate encodingAndrey Cherezov2009.05.23 07:091 Кб
Git over WebDav в EservAndrey Cherezov2009.05.06 18:592 Кб
Исправление Lightning для поддержки русских имен календарейAndrey Cherezov2009.05.05 20:541 Кб
Реклама отсутствующего Exchange ServerAndrey Cherezov2009.05.05 19:021 Кб
Архивация в Thunderbird3AndreyCherezov@2009.04.24 22:441 Кб
RU-CENTER - почта не работает три дняAndrey Cherezov2009.04.23 17:331 Кб
RU-CENTER заспамили насмертьAndrey Cherezov2009.04.22 13:592 Кб
Самопубликация для всех пользователей всех доменовAndrey Cherezov2009.04.20 06:551 Кб

IE тоже не всегда принимает deflate

В мае я жаловался на FlashPlayer, что тот не понимает режим сжатия deflate, хотя и декларирует его поддержку в заголовке HTTP-запроса. Оказывается с InternetExplorer та же беда, только у него это зависит от размера: небольшие файлы берет с deflate без проблем, а файлы побольше — нет — просто не показывает страницу, без объяснения причин. Конкретную границу размера я не выяснял, но уже на 200Кб (сжатого) проблема есть. Если заменить deflate на gzip (тот же самый алгоритм сжатия, но немного отличается заголовок — в gzip он на 10 байтов больше, там записывается дата модификации файла и несколько флагов), то берёт файлы любого размера!

Подозреваю, что в обоих случаях — IE и Flash — речь идёт о блокировании (вместо исправления) какой-то уязвимости в этих программах. Переполнение буфера скорее всего. Формат имеет неприятную особенность — размер несжатого файла в заголовке не передается, поэтому заранее выделить буфер достаточного для распаковки объема без перерасхода памяти затруднительно. Степень сжатия может различаться на порядки в зависимости от исходных данных, соответственно размер выходного буфера зависит от размера входного файла нелинейно. Если в процессе распаковки видно, что буфер мал, то IE просто отказывается работать с файлом. Вместо того, чтобы выделить буфер побольше (как делаем мы, и как делают все браузеры кроме IE). Конечно, не все серверы выдают весь файл одним сжатым куском. Можно выдавать порциями, сжимая каждую порцию отдельно, формат это позволяет (потому он в заголовке и не пишет размер — отправляющей программе и самой может быть неизвестен окончательный размер, если файл является результатом генерации, а не статической выдачи), и тогда с большей вероятностью все порции влезут в буфер IE, но зато пострадает степень сжатия... C gzip'ом ситуация иная: некоторые серверы хранят статические файлы в виде обычных *.gz-файлов, например *.html.gz, и выдают их при запросе *.html, не распаковывая, а просто подставляя Content-Encoding: gzip в заголовок. И если IE будет капризничать с gzip также как и с deflate, то он перестанет работать с заметным числом сайтов. Поэтому с gzip им пришлось реализовать приёмник честно. Странно, что заодно не сделали то же с deflate — алгоритм-то один, и по идее обработчики (фильтры) должны быть в одном и том же месте кода программы. Но наверное в Microsoft всё не так, и эти фрагменты писались разными программистами в разные годы в разных модулях в разных условиях. А нам за них отдуваться
 
Комментарии к этой версии (12.10.2009 08:50) [~ac] 1e8de949