c# - minification - bundles asp net mvc 4
MVC4 Ensamblaje de encabezados de caché (2)
Quiero cambiar los encabezados de caché enviados desde una solicitud de paquete. Actualmente está variando por User-Agent
pero no lo quiero, ¿hay alguna manera de cambiar los encabezados enviados por un paquete de solicitud?
Después de echar un vistazo rápido al ensamblado System.Web.Optimization
, puedo ver que los encabezados se configuran en Bundle.SetHeaders
que es una función privada estática, por lo que no creo que sea posible, aunque me gustaría que se demostrara que está mal.
Esto no es algo que actualmente exponemos hoy. Solo exponemos la propiedad Cacheability en el BundleRepsonse que un IBundleTransform podría cambiar. Y sí, establecimos explícitamente las siguientes cosas:
HttpCachePolicyBase cachePolicy = context.HttpContext.Response.Cache;
cachePolicy.SetCacheability(bundleResponse.Cacheability);
cachePolicy.SetOmitVaryStar(true);
cachePolicy.SetExpires(DateTime.Now.AddYears(1));
cachePolicy.SetValidUntilExpires(true);
cachePolicy.SetLastModified(DateTime.Now);
cachePolicy.VaryByHeaders["User-Agent"] = true;
Tenemos un elemento de trabajo nuestro retraso para abrir esto y hacerlo más extensible / personalizable en el futuro.
Hay una solución alrededor, como se menciona en el comentario de janv8000 sobre esta respuesta . Debe agregar la siguiente regla de reescritura de URL a su servidor web:
<system.webServer>
<rewrite>
<outboundRules>
<rule name="Cache Bundles" preCondition="IsBundles" patternSyntax="ExactMatch">
<match serverVariable="RESPONSE_Vary" pattern="User-Agent" />
<action type="Rewrite" value="Accept-Encoding" />
</rule>
<preConditions>
<preCondition name="IsBundles" patternSyntax="Wildcard">
<add input="{URL}" pattern="*/bundles/*" />
</preCondition>
</preConditions>
</outboundRules>
</rewrite>
</system.webServer>
Obviamente, debes prestar atención para tener todos tus paquetes en la carpeta de paquetes o cambiar la IsBundles
previa de IsBundles
consecuencia.