четверг, августа 02, 2007

IIS 6.0 + HTTP Compression или как стать носителем сакрального знания

Очередной рабочий день, в течении которого пришлось убить 3-4 часа на поиски в инете казалось бы простого решения - как настроить сжатие траффика на IIS 6.0 - открыл для меня сакральное знание...и прибавил пару седых волос и раскачал и без того мои расшатанные нервы:)...

А именно, чтобы настроить сжатие траффика на IIS, можно следовать следующей инструкции:

Enabling HTTP Compression (IIS 6.0)
Для моего сервера необходимо было настроить сжатие для динамических файлов, а именно:
aspx & js - файлы последнего расширения выдаются asp.net приложением посредством http handler...

Казалось, что проще, следуем следующей инструкции:


Customizing the File Types IIS Compresses (IIS 6.0)
сделал все как описано, запустил пару скриптов из раздела

To add one or more file types to the server-wide dynamic compression configuration:



а именно:
cscript adsutil.vbs SET W3SVC/Filters/Compression/Deflate/HcScriptFileExtensions "asp dll exe aspx js"
cscript adsutil.vbs SET W3SVC/Filters/Compression/gzip/HcScriptFileExtensions "asp dll exe aspx js"

(как оказалось, этим рекомендациям верить нельзя, опишу решение дальше...)
казалось, бы на этом можно и закончить, но все check-сервера отказывались видеть мои страницы с расширением aspx, js как сжатые...
список серверов:

  • http://www.seoconsultants.com/tools/compression.asp
  • http://www.pipeboost.com/
проверял все, никаких результатов, решения добился следующим образом - полный цикл всех необходимых операций:

1. в консоли управления iis (inetmgr.exe) на ветке websites выбираем properties, идем во вкладку service, в группе http compression устанавлием следующие флаги:
compress static files - если нам нужно сжатие статических файлов нашего приложения, т.е. txt, html, htm...
compress application files - если нам нужно добиться сжатия файлов приложений asp.net




2. идем в настройку web service extensions, добавляем новое расширение, назовем его для примера http compression, указываем на файл расширения C:\WINDOWS\system32\inetsrv\gzip.dll.





3. тут же устанавлием флажок Set extension status to Allowed





в принципе - это все стандартно, и конфликтов не должно было быть, дальше у меня возникли сложности с настройкой расширений...вышеуказанная ссылка на рекомендации microsoft убили пару часов моего времени, а именно, когда в gzip/HcScriptFileExtensions "asp dll exe aspx js"
указывал расширения через пробел, о чем впрочем и говорилось...поэтому не верьте, читайте дальше...

настройка расширений:
4. сначала позволяем прямое редактирование файла метаданных iis server, для этого идем в оснастку inetmgr, на top-level ветке дерева выбираем свойства и устанавливаем флажок "Enable direct metabese edit"





5. далее в каталоге C:\WINDOWS\system32\inetsrv ищем файл metabase.xml, начинаем его редактирование - сразу оговорюсь, лучше сделать backup файла во избежанием его повреждения.
6. в файле ищем секции:
НЕПРАВИЛЬНО, список расширений нужно указавать не через пробел (собственно говоря, список расширений получился в таком виде в результате запуска вышеуказанных скриптов через cscscript.exe):


а через начало новой строки, просто enter....это, кстати, и есть грабли:), приблизительно так - ТАК ПРАВИЛЬНО:




в результате сжатия добился, результаты сжатия таковы:
http://www.pipeboost.com/



http://www.seoconsultants.com/tools/compression.asp



в принципе стоило из-за чего побороться...
удачи всем и не наступать на мои грабли...

5 комментариев:

Анонимный комментирует...

Вообще-то задачка решается за 5 секунд при помощи MetabaseExplorer (Это как Regedit для реестра). Незаменимая вещь для IIS администратора.

Unknown комментирует...

Спасибо :)
просто я не IIS администратор ...
Поводом для написания послужил неудачный опыт использования ZipEnable, который некоректно менял файла метабазы IIS, поэтому и пришлось разбираться с такими нюансами...

Анонимный комментирует...

MS поправил команду добавления расширений - http://technet2.microsoft.com/WindowsServer/ru/Library/5dc453d4-c841-43ae-9053-396f5fb3d25c1049.mspx?mfr=true - в кавычки нужно брать каждое расширение, а не строку целиком

Unknown комментирует...

спасибо за ссылку
ресурс полезный

igor комментирует...

А как проверить, что сервер выдает сжатое содержимое? Сервер в локальной сети и выхода наружу нет.
Спасибо