В связи с последними инициативами Гугла, размер веб-страницы и скорость ее загрузки стали вновь актуальны. Скорость загрузки контента становится одним из критериев ранжирования результатов поиска. О GZip и Deflate сжатии написано уже много, о серверном кешировании — тоже. Поговорим о заголовках.
Итак, ваше ASP.NET-приложение, помимо прочих, шлет на клиент следующие заголовки (значения могут варьироваться):
Убрав эти header'ы мы «облегчим» траффик всего на какие-то 100 байт для каждого запроса, но, во-первых, следует помнить, что эти 100 байт, будучи умноженными на десятки тысяч запросов к вашему серверу, сыграют ощутимую роль. Во-вторых, отсуствие header'ов усложнит жизнь злоумышленникам, которые будут лишены информации о версии вашего сервера, версии ASP.NET и о платформе вообще.
Теперь к делу.
Тут все просто. Достаточно добавить в web.config строку:
Если вы используете фреймворк ASP.NET MVC, добавьте этот код в обработчик Application_Start в файле Global.asax:
Запускаем оснастку администрирования IIS и идем на вкладку «service» в свойствах веб-сайта:
Если у вас IIS7 — все похоже:
Тут все сложнее. Этот заголовок добавляет сама IIS, поэтому придется вычищать его «руками», с помощью небольшого хака, опять же, в Global.asax, в обработчике Application_PreSendRequestHeaders:
К сожалению, это сработает только с включенной настройкой Integrated Pipeline Mode — читай — «только в IIS7». Для IIS6 придется прибегнуть к помощи бесплатной утилитки от Microsoft — UrlScan
Итак, ваше ASP.NET-приложение, помимо прочих, шлет на клиент следующие заголовки (значения могут варьироваться):
- Server: Microsoft-IIS/6.0
- X-Powered-By: ASP.NET
- X-AspNet-Version: 2.0.50727
- (опционально) X-AspNetMvc-Version: 1.0
Убрав эти header'ы мы «облегчим» траффик всего на какие-то 100 байт для каждого запроса, но, во-первых, следует помнить, что эти 100 байт, будучи умноженными на десятки тысяч запросов к вашему серверу, сыграют ощутимую роль. Во-вторых, отсуствие header'ов усложнит жизнь злоумышленникам, которые будут лишены информации о версии вашего сервера, версии ASP.NET и о платформе вообще.
Теперь к делу.
Убираем заголовок X-AspNet-Version.
Тут все просто. Достаточно добавить в web.config строку:
<httpRuntime enableVersionHeader="false" />
Убираем заголовок X-AspNetMvc-Version
Если вы используете фреймворк ASP.NET MVC, добавьте этот код в обработчик Application_Start в файле Global.asax:
MvcHandler.DisableMvcResponseHeader = true;
Убираем заголовок X-Powered-By
Запускаем оснастку администрирования IIS и идем на вкладку «service» в свойствах веб-сайта:
Если у вас IIS7 — все похоже:
Убираем заголовок Server
Тут все сложнее. Этот заголовок добавляет сама IIS, поэтому придется вычищать его «руками», с помощью небольшого хака, опять же, в Global.asax, в обработчике Application_PreSendRequestHeaders:
//все гениальное просто
HttpContext.Current.Response.Headers.Remove("Server");
К сожалению, это сработает только с включенной настройкой Integrated Pipeline Mode — читай — «только в IIS7». Для IIS6 придется прибегнуть к помощи бесплатной утилитки от Microsoft — UrlScan