Почему мои страницы все еще не распакованы? - PullRequest
2 голосов
/ 16 июня 2009

С помощью YSlow я пытаюсь немного настроить свои страницы.
Я подумал, что для большого выигрыша будет мало усилий, чтобы сжать мои страницы. Попробовав все из здесь , здесь , здесь и здесь YSlow все еще показывает, что мои страницы сжаты nog.

Я использую asp.net mvc 1.0 на IIS6.

Следуя следующим правилам в моем global.asax, я проверяю, что мой статический контент не обрабатывается MVC.

routes.Clear();
// Turns off the unnecessary file exists check 
routes.RouteExistingFiles = true;
// Ignore text, html, files.
routes.IgnoreRoute("{file}.txt");
routes.IgnoreRoute("{file}.htm");
routes.IgnoreRoute("{file}.html");
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// Ignore the content directory which contains images, js, css & html   
routes.IgnoreRoute("Content/{*pathInfo}");
//Exclude favicon (google toolbar request gif file as fav icon which is weird)   
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.([iI][cC][oO]|[gG][iI][fF])(/.*)?" });

Это обеспечит статическую доступность моих файлов js и css.

Это соответствующие фрагменты моего metaase.xml

<IIsCompressionScheme   Location ="/LM/W3SVC/Filters/Compression/deflate"
        HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
        HcCreateFlags="0"
        HcDoDynamicCompression="TRUE"
        HcDoOnDemandCompression="TRUE"
        HcDoStaticCompression="TRUE"
        HcDynamicCompressionLevel="9"
        HcFileExtensions="htm
            html
            txt
            css
            js
            mvc"
        HcOnDemandCompLevel="10"
        HcPriority="1"
        HcScriptFileExtensions="asp
            dll
            exe"
    >
</IIsCompressionScheme>

<IIsCompressionScheme   Location ="/LM/W3SVC/Filters/Compression/gzip"
        HcCompressionDll="%windir%\system32\inetsrv\gzip.dll"
        HcCreateFlags="1"
        HcDoDynamicCompression="TRUE"
        HcDoOnDemandCompression="TRUE"
        HcDoStaticCompression="TRUE"
        HcDynamicCompressionLevel="9"
        HcFileExtensions="htm
            html
            txt
            css
            js
            mvc"
        HcOnDemandCompLevel="10"
        HcPriority="1"
        HcScriptFileExtensions="asp
            dll
            exe"
    >
</IIsCompressionScheme>

(meta: не уверен, стоит ли мне ставить это на SO или на SF)

1 Ответ

4 голосов
/ 16 июня 2009

Проблема в том, что сжатие связано с расширением, вам нужно указать все расширения, которые должны получать статическое или динамическое сжатие. Вероятно, вы можете увидеть это, посмотрев на атрибуты HcFileExtensions и HcScriptFileExtensions соответственно.

Таким образом, с MVC, встроенным в IIS6, где у вас необязательно есть расширения файлов, вы не получите никакого сжатия для динамического содержимого. IIS7 работает по-другому, поскольку использует список mimeTypes для запуска сжатия. IIS7 с интегрированным конвейером - это то место, где мы действительно ожидаем размещения приложений MVC. В IIS6 это возможно, но клудж и сжатие - одна из жертв.

Редактировать

Для статического содержимого в IIS6 имейте в виду, что сжатие происходит в отдельном потоке и запускается после первого запроса к ресурсу, сам первый запрос выходит без сжатия. Последующие запросы на ресурс должны затем предоставляться с использованием сжатой версии.

...