Jugando con httpCompression I relativé que IIS entiende archivos estáticos en MVC como contenido dinámico, por lo que incluso si marca "Habilitar compresión de contenido estático", pero no marque " Habilitar compresión de contenido dinámico", IIS devolverá los archivos .css
y .js
sin compresión:IIS entiende archivos estáticos en MVC como contenido dinámico
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
Pero entonces si marcar la casilla 'Habilitar compresión de contenido dinámico' los archivos están comprimidos:
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
Incluso si trato de ignorar las rutas a ~/Content
y ~/Scripts
, estos archivos están siendo entendido como contenido dinámico:
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
);
}
Creo que esto es probablemente debido a que la línea de web.config que se necesita para MVC, pero también obliga a todas las peticiones a través de la canalización de ASP.NET:
<modules runAllManagedModulesForAllRequests="true" />
ACTUALIZACIÓN: he tratado de poner este valor en false y sucede lo mismo.
¿Hay alguna manera de evitarlo? No quiero compresión para mi contenido dinámico, pero sí quiero para mi contenido estático.
¿O es la única forma de poner los archivos en otro lugar?
Saludos.
mi respuesta (y post de Rick Strahl) que ayuda en absoluto? Curioso si alguna vez has pasado este bulto. –