Ясен пень, заголовок немного провокационный. Но мне надоели эти занудные “Быстрые веб-страницы”, поэтому серия статей по оптимизации веб-приложений продолжится под заголовком “Скаженi кабани”. Уже интереснее, правда?

ОК, мальчики и девочки, тема сегодняшней лекции – создание “облегченной” версии IIS 7.0 сервера, для простейших HTML приложений и статических файлов. А нафиг надо? Понадобиться это может в случае, если вы решили вынести все свои статические ресурсы (картинки, css, js-скрипты) на другой сервер. Или же, если вы наколбасили 2000-3000 html страниц, а Апач настраивать вы не умеете… Для тех, кто еще не успел поставить IIS 7 на свой сервер, дам небольшой setup snippet:

Start /w pkgmgr /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;IIS-DirectoryBrowsing;IIS-HttpErrors;IIS-HealthAndDiagnostics;IIS-HttpLogging;IIS-LoggingLibraries;IIS-RequestMonitor;IIS-Security;IIS-RequestFiltering;IIS-HttpCompressionStatic;IIS-WebServerManagementTools;WAS-WindowsActivationService;WAS-ProcessModel

(заметка: я опустил IIS-ManagementConsole, WAS-NetFxEnvironment, и WAS-ConfigurationAPI, чтобы сервер был дружелюбнее)

Прежде, чем следовать советам всяких умников (вроде меня) сделайте бэкап настроек сервера по умолчанию:

%windir%\system32\inetsrv\appcmd add backup "default_install"

Теперь осталось “раздеть” IIS, бережно, как любимую девушку:

%windir%\system32\inetsrv\appcmd uninstall module TokenCacheModule
%windir%\system32\inetsrv\appcmd uninstall module DefaultDocumentModule
%windir%\system32\inetsrv\appcmd uninstall module DirectoryListingModule
%windir%\system32\inetsrv\appcmd uninstall module RequestFilteringModule
%windir%\system32\inetsrv\appcmd uninstall module HttpLoggingModule
%windir%\system32\inetsrv\appcmd uninstall module ProtocolSupportModule
%windir%\system32\inetsrv\appcmd uninstall module RequestMonitorModule

%windir%\system32\inetsrv\appcmd uninstall module CustomErrorModule

Вуаля, теперь у вас есть обнаженная девушка облегченный сервер, на котором остались только:

1) UriCacheModule – кэширует информацию о URLах на уровне оболочки

2) FileCacheModule – кэширует файлы в память

3) HttpCacheModule – кэширует файлы на уровне ядра

4) StaticCompressionModule – сжимает статические файлы для уменьшения передаваемого объема данных

5) StaticFileModule – обрабатывает запросы к статическим ресурсам

6) AnonymousAuthenticationModule – модуль анонимной аутентификации (а по названию и не скажешь, правда?)

Небольшой тест показывает разницу между пропускной способностью “облегченной” версии IIS, стандартной комплектацией сервера и сервера со всеми модулями (с отключенным кэшем на уровне ядра).

image

 

Таким образом мы стали быстрее примерно на 58%, по сравнению с сервером, полностью напичканным модулями. Также снизилось количество байт передаваемых по сети, примерно на 22%. И я сохранил 5 метров трафика.

Полезные ссылки

Install Typical IIS Workloads

Installing IIS 7.0 on Windows Server 2008