У меня есть сайт ASP.NET MVC, работающий в IIS 6.0, и я хочу, чтобы он сжимал статические файлы css и js, которые он обслуживает. На сайте есть сопоставление с подстановочными знаками, поэтому все запросы (включая URL-адреса без расширений) проходят через aspnet_isapi.dll. Статическое содержимое хранится в папках Content и Scripts.
Я выполнил следующие шаги:
Включено сжатие HTTP для файлов приложений и статических файлов в консоли IIS (веб-сайты -> вкладка "Сервис").
Добавлено расширение веб-службы с именем «HTTP-сжатие», ссылающееся на inetsrv \ gzip.dll
Отредактированный MetaBase.xml для добавления css и js в свойство HcFileExtensions gzip и дефлятирования записей IIsCompressionScheme.
Убрано сопоставление с подстановочными знаками из папок «Содержимое» и «Сценарии» (для этого было временно сделано их веб-каталогами, удалено сопоставление с подстановочными знаками, они возвращены в обычные папки). Это должно гарантировать, что IIS обслуживает эти файлы без участия ASP.NET.
Странное поведение, которое я сейчас получаю, состоит в том, что, когда Fiddler работает, он сообщает о размерах сжатых файлов для css и js, и Firebug соглашается (например, 47.9KB для jquery-ui.min.js). Но когда я отключаю Fiddler и нажимаю CTRL + F5, Firebug сообщает о несжатых размерах (194,2 КБ для jquery-ui.min.js) и неожиданных Content-Type и Content-Length.
Заголовки запроса не меняются, но интересно посмотреть на заголовки ответа.
При запущенном Fiddler Firebug сообщает (для jquery-ui.min.js):
Content-Length 49009
Content-Type application/x-javascript
Content-Encoding gzip
Last-Modified Wed, 26 Jan 2011 11:59:25 GMT
Accept-Ranges bytes
Etag "80cce07950bdcb1:a03"
Vary Accept-Encoding
Server Microsoft-IIS/6.0
X-Powered-By ASP.NET
x-ua-compatible IE=8
без скрипача:
Proxy-Authenticate NTLM
Content-Length 415
Keep-Alive timeout=5, max=100
Connection Keep-Alive
Content-Type text/html; charset=iso-8859-1
Почему Content-Type теперь text / html? Контент-длина 415 выглядит странно, он не соответствует 194,2 КБ, которые Firebug сообщает как размер ответа. Различные другие заголовки больше не присутствуют.
Для полноты заголовок запроса:
Host my-windows-box
User-Agent Mozilla/5.0 (Windows; U; Windows NT 5.2; en-GB; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13 ( .NET CLR 3.5.30729; .NET4.0E)
Accept */*
Accept-Language en-gb,en;q=0.5
Accept-Encoding gzip,deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive 115
Proxy-Connection keep-alive
Referer http://my-windows-box/site
Cookie ASP.NET_SessionId=nbsb2hbkjdtcgjdntco25zqc
Pragma no-cache
Cache-Control no-cache