Ясен пень, заголовок немного провокационный. Но мне надоели эти занудные “Быстрые веб-страницы”, поэтому серия статей по оптимизации веб-приложений продолжится под заголовком “Скажен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, стандартной комплектацией сервера и сервера со всеми модулями (с отключенным кэшем на уровне ядра).
Таким образом мы стали быстрее примерно на 58%, по сравнению с сервером, полностью напичканным модулями. Также снизилось количество байт передаваемых по сети, примерно на 22%. И я сохранил 5 метров трафика.
Полезные ссылки
Install Typical IIS Workloads
Installing IIS 7.0 on Windows Server 2008