GZip-сжатие по типу содержимого application/xhtml + xml, не работающему в IIS 7.5/MVC

У меня есть сайт MVC3, работающий на IIS 7.5 с включенным сжатием.

Сжатие GZip работает на всех страницах сайта, за исключением нескольких страниц, на которых я вручную меняю тип контента на application/xhtml+xml (это необходимо по разным причинам) в контроллере (Response.ContentType = "application/xhtml+xml";).

Как насчет этого типа содержимого, GZip не будет работать, и существует ли какой-либо способ этого?

1 ответ

application/xhtml+xml не является одним из встроенных типов mime, которые IIS-сжатие знает для сжатия. Вы должны включить сжатие для этого типа mime явно.

Я предполагаю, что вы хотите, чтобы сжатие было включено, будь то статический файл или динамически сгенерирован. Для этого вы должны добавить mime-тип в конфигурацию system.webServer/httpCompression staticTypes и dynamicTypes. Один из самых простых способов сделать это с помощью развертывания script - просто использовать appcmd.exe следующим образом:

Добавление поддержки для сжатия статического содержимого

appcmd.exe set config -section:system.webServer/httpCompression /+"staticTypes.[mimeType='application/xhtml%%2bxml',enabled='True']" /commit:apphost

Добавление поддержки сжатия динамического содержимого

appcmd.exe set config -section:system.webServer/httpCompression /+"dynamicTypes.[mimeType='application/xhtml%%2bxml',enabled='True']" /commit:apphost

Очевидно, вы можете использовать этот же подход для любых других типов содержимого, которые могут быть сжаты.

licensed under cc by-sa 3.0 with attribution.