IIS понимает статические файлы в MVC как динамическое содержимое

Играя с httpCompression Я понял, что IIS понимает статические файлы в MVC как динамическое содержимое, поэтому даже если вы отметите« Включить сжатие статического содержимого », но не ставьте галочку « Включить сжатие динамического содержимого », IIS вернет файлы .css и .js без сжатия:

GET /MVCX/Content/Site.css HTTP/1.1
Host: localhost
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2
Accept: text/css,*/*;
Referer: http://localhost/mvcx/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

HTTP/1.1 200 OK
Content-Type: text/css
Last-Modified: Mon, 05 Dec 2011 12:42:37 GMT
Accept-Ranges: bytes
ETag: "c79895e4bb3cc1:0"
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Mon, 05 Dec 2011 12:44:43 GMT
Content-Length: 1005

Но затем, если я отмечу « ] Включить сжатие динамического содержимого «файлы сжимаются:

GET /MVCX/Content/Site.css HTTP/1.1
Host: localhost
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.2 (KHTML, like Gecko) Chrome/15.0.874.121 Safari/535.2
Accept: text/css,*/*;
Referer: http://localhost/mvcx/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3

HTTP/1.1 200 OK
Content-Type: text/css
Content-Encoding: gzip
Last-Modified: Mon, 05 Dec 2011 12:42:37 GMT
Accept-Ranges: bytes
ETag: "c79895e4bb3cc1:0"
Vary: Accept-Encoding
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Mon, 05 Dec 2011 12:48:36 GMT
Content-Length: 522

Даже если я попытаюсь игнорировать маршруты к ~ / Content и ~ / Scripts , эти файлы все равно будут понимается как динамический контент:

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
        routes.IgnoreRoute("{Content}/{*pathInfo}");
        routes.IgnoreRoute("{Scripts}/{*pathInfo}");

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );
    }

Я думаю, это, вероятно, потому, что строка web.config необходима для MVC, но также заставляет все запросы через конвейер ASP.NET:

<modules runAllManagedModulesForAllRequests="true" />

ОБНОВЛЕНИЕ: Я попытался установить для этого параметра значение false, и происходит то же самое.

Есть ли способ избежать этого? Я не хочу сжатия для моего динамического содержимого, но хочу его для моего статического содержимого.

Или это единственный способ поместить файлы в другое место?

Ура.

6
задан arcain 6 December 2011 в 22:02
поделиться