Параметры сжатия ASP.NET MVC в IIS6 - PullRequest
5 голосов
/ 16 марта 2009

На данный момент я застрял с IIS6 для ASP.NET-MVC (так как в настоящее время я не могу обновить до Server 2008). Кажется, он не знает, что мои RESTful URL-адреса являются динамическими файлами и не сжимает их.

Все мои старые файлы .aspx сжимаются (как видно из Fiddler), но не URL-адреса типа '/products/1001'.

Есть ли способ заставить IIS6 сжимать мои ActionResults в IIS6 без использования чего-то вроде ActionFilter для сжатия .

Я предполагаю, что IIS7 достаточно умен, чтобы знать, что они динамичны.

Бонусные баллы, если вы можете сказать мне, как IIS6 вообще знает, какие файлы являются динамическими!

Ответы [ 3 ]

5 голосов
/ 16 марта 2009

Поскольку HTTP-сжатие для ASP.NET обычно реализуется с использованием HttpModules начиная с версии 1.0, а HttpModules по-прежнему принадлежат конвейеру запросов ASP.NET, используемому средой MVC, вы все равно можете использовать HttpModule для внедрения GZIP или ответа с дефляцией фильтр.

Здесь вы можете найти очень хорошую, готовую к реализации реализацию с открытым исходным кодом: HttpCompress от Бен Лоури (скачать по адресу Google Code )

Вам просто нужно добавить ссылку на DLL и добавить несколько строк в ваш web.config. Он уже обрабатывает очень экзотические и редкие случаи и исключения. Вы можете добавлять исключения в ваш файл web.config, но не на основе расширений файлов (как в IIS6), а на тип mime, который, вероятно, именно то, что вам нужно.

Я должен добавить, что у меня на самом деле работает веб-сайт ASP.NET MVC на IIS6 с использованием этой библиотеки, поэтому я могу подтвердить, что это работает на практике.

0 голосов
/ 22 октября 2009

Вот один из вариантов, который мне подходит для MVC и IIS 6 с использованием групповых сопоставлений и URL-адресов без расширений:

  1. установить динамическое и статическое сжатие глобально, используя инструмент администратора
  2. измените файл metabase.xml так, чтобы HcScriptFileExtensions был пустым в CompressionSchemes. Это попытается сжать все (включая jpgs и gifs).
  3. Отключите динамическое сжатие на уровне папки, используя свойство DoDynamicCompression = "false". При этом предполагается, что весь ваш статический контент находится в одном каталоге.
  4. Добавьте статические расширения файлов, которые вы хотите сжать (css, js и т. Д.), В свойство HcFileExtensions.

Это обходной путь, но на данный момент я застрял с Server 2003 и IIS 6.

0 голосов
/ 16 марта 2009

В веб-конфигурации вы должны зарегистрировать StaticFileHandler и модуль HTTP

<add verb="GET,HEAD,POST" path="*" type="[Web.Front.Modules].StaticFileHandler"/>
<add name="HttpCompressionModule" type="[Web.Front.Modules].HttpCompressionModule"/>

Исходный код вы найдете здесь

Но не забудьте включить сжатие на IIS

...