Получение сжатия HTTP (GZip) для работы с маршрутизацией URL на IIS 6
Я не видел никаких вопросов, конкретно касающихся этой конкретной проблемы.
Когда используется маршрутизация URL, запрос переходит в IIS, а затем направляется на страницу Aspx. Например, сайт: www.site.com/products может направить запрос по адресу wwwroot / inetpub / mysite / pages / productsPage.aspx
Важно отметить, что страница является ROUTED, а не ReDirected.
Обратите внимание, что для правильной работы URL в IIS 6 необходимо установить расширение Wildcard, которое направляет все ресурсы в Asp.Net (Asp.Net затем передает статические ресурсы обратно). Это задокументировано здесь: http://blog.codeville.net/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/
Похоже, что IIS не GZip контент, когда он отправляет его обратно. Я следовал инструкциям здесь: http://www.kavinda.net/2007/02/17/how-to-enable-http-compression-iis6.html
включить сжатие IIS 6.
Есть идеи, почему Http Compression не работает? Кажется, он отлично работает на других сайтах на моем сервере. Только тот, с URL-маршрутизацией не работает
4 ответа
Сделайте так, чтобы ваше приложение ASP.NET распаковывало свои данные таким способом.
Лучше всего использовать HttpCompress от Bel Lowery. Это простой бесплатный HttpModule с открытым исходным кодом, который обрабатывает HTTP-сжатие ваших страниц. Вы можете использовать его в сочетании с опцией сжатия IIS Http.
Я использую HttpCompress в сочетании с Vici MVC, и он работает гладко!
Я искал сеть несколько часов, и она либо использовала HttpCompress, либо купила коммерческий проект (у Port80 Software есть решение), либо написала свой собственный HttpModule.
PS: IIS выполняет сжатие HTTP на основе расширения файла. Вот почему это не работает для сайтов, использующих маршрутизацию URL.
Вы пробовали таким образом? MS KB322603
Чтобы включить IIS 5.0 для сжатия страниц ASPX, выполните следующие действия.
- Откройте командную строку.
- Введите net stop iisadmin и нажмите клавишу ВВОД.
- Введите cd C:\InetPub\adminscripts и нажмите клавишу ВВОД.
- Введите следующую команду и нажмите клавишу ВВОД: CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/ Фильтры / Сжатие /GZIP/HcScriptFileExtensions "asp" "dll" "exe" "aspx"
- Введите следующую команду и нажмите клавишу ВВОД: CSCRIPT.EXE ADSUTIL.VBS SET W3Svc/ Фильтры / Сжатие /DEFLATE/HcScriptFileExtensions "asp" "dll" "exe" "aspx"
- Введите net start w3svc и нажмите клавишу ВВОД.
Извините за опоздание на обсуждение, но поскольку мне (все еще) приходится включать сжатие IIS 6 на сайте MVC, вот собственное решение IIS 6, которое я нашел: Включить в сжатые расширения axd
, Предположим, у вас правильно включена поддержка URL-адресов без расширения IIS 6 из.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.