Назад | Перейти на главную страницу

Получение сжатия HTTP (GZip) для работы с маршрутизацией URL-адресов в IIS 6

Я не видел никаких вопросов, посвященных этой конкретной проблеме.

Когда используется URL-маршрутизация, запрос поступает в IIS, а затем направляется на страницу Aspx. Например, сайт: www.site.com/products может направить запрос на wwwroot / inetpub / mysite / pages / productsPage.aspx.

Важно отметить, что страница имеет МАРШРУТ, а не переадресацию.

Обратите внимание, что для правильной работы URL-адресов в IIS 6 необходимо Расширение подстановочного знака должен быть настроен, который направляет все ресурсы в Asp.Net (Asp.Net затем вернет статические ресурсы обратно). Это описано здесь: http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/

Похоже, что IIS не архивирует контент при отправке обратно. Я выполнил инструкции здесь: http://www.kavinda.net/2007/02/17/how-to-enable-http-compression-iis6.html

чтобы включить сжатие IIS 6.

Есть идеи, почему сжатие Http не работает? Кажется, он отлично работает на других сайтах на моем сервере. Только тот с маршрутизацией URL не работает

Лучше всего использовать HttpCompress пользователя Bel Лоури. Это простой, бесплатный HttpModule с открытым исходным кодом, обрабатывающий HTTP-сжатие ваших страниц. Вы можете использовать его в сочетании с опцией IIS Http Compression.

Я использую HttpCompress в сочетании с Vici MVC, и он работает плавно!

Я часами искал в сети, и я либо использовал HttpCompress, либо купил коммерческий проект (у программного обеспечения Port80 есть решение), либо написал свой собственный HttpModule.

PS: IIS выполняет HTTP-сжатие на основе расширения файла. Вот почему он не работает для веб-сайтов, использующих маршрутизацию URL-адресов.

Сделайте так, чтобы ваше приложение ASP.NET сжало свои выходные данные с помощью такого метода, как вот этот.

Извините за столь позднее обсуждение, но поскольку мне (все еще) нужно включить сжатие IIS 6 на сайте MVC, вот собственное решение IIS 6, которое я нашел: Включить в сжатые расширения axd. Предположим, что у вас правильно включено расширение IIS 6 без поддержки URL-адресов из .Net framework 4.

Я сделал это прямо в метабазе IIS. (Как объяснено Вот; %windir%\systems32\inetsrv\metabase.xml. Перед редактированием остановите IIS или включите «горячее редактирование метабазы» в IIS и сделайте резервную копию.)

Извлечение из моей конфигурации:

<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
        xml
        css
        js"
    HcOnDemandCompLevel="10"
    HcPriority="1"
    HcScriptFileExtensions="asp
        dll
        exe
        cgi
        aspx
        asmx
        ashx
        axd"
>
</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
        xml
        css
        js"
    HcOnDemandCompLevel="10"
    HcPriority="1"
    HcScriptFileExtensions="asp
        dll
        exe
        cgi
        aspx
        asmx
        ashx
        axd"
>
</IIsCompressionScheme>
<IIsCompressionSchemes  Location ="/LM/W3SVC/Filters/Compression/Parameters"
    HcCacheControlHeader="max-age=86400"
    HcCompressionBufferSize="8192"
    HcCompressionDirectory="%windir%\IIS Temporary Compressed Files"
    HcDoDiskSpaceLimiting="TRUE"
    HcDoDynamicCompression="TRUE"
    HcDoOnDemandCompression="TRUE"
    HcDoStaticCompression="TRUE"
    HcExpiresHeader="Wed, 01 Jan 1997 12:00:00 GMT"
    HcFilesDeletedPerDiskFree="256"
    HcIoBufferSize="8192"
    HcMaxDiskSpaceUsage="99614720"
    HcMaxQueueLength="1000"
    HcMinFileSizeForComp="1"
    HcNoCompressionForHttp10="FALSE"
    HcNoCompressionForProxies="FALSE"
    HcNoCompressionForRange="FALSE"
    HcSendCacheHeaders="FALSE"
>
</IIsCompressionSchemes>

Рационально: внутренние URL-адреса без расширений работают в IIS 6 путем вызова eurl.axd страница. Посмотри это блог для более подробного объяснения расширений без URL-адресов в IIS6 с fx4.

Вы пробовали этот способ? MS KB322603

Чтобы разрешить IIS 5.0 сжимать страницы ASPX, выполните следующие действия:

  1. Откройте командную строку.
  2. Введите net stop iisadmin и нажмите клавишу ВВОД.
  3. Введите cd C: \ InetPub \ adminscripts и нажмите клавишу ВВОД.
  4. Введите следующее и нажмите клавишу ВВОД: CSCRIPT.EXE ADSUTIL.VBS SET W3Svc / Filters / Compression / GZIP / HcScriptFileExtensions "asp" "dll" "exe" "aspx"
  5. Введите следующее и нажмите клавишу ВВОД: CSCRIPT.EXE ADSUTIL.VBS SET W3Svc / Filters / Compression / DEFLATE / HcScriptFileExtensions "asp" "dll" "exe" "aspx"
  6. Введите net start w3svc и нажмите клавишу ВВОД.