I want to change the cache headers sent from a bundle request. Currently it is varying by User-Agent
but I don't want it to, is there a way to change the headers sent by a bundle request?
After a quick look in the System.Web.Optimization
assembly I can see the headers get set in Bundle.SetHeaders
which is a private static function so I don't think its possible although I would love to be proven wrong.
This isn't something that we currently expose today. We only expose the Cacheability property on the BundleResponse that a IBundleTransform could change. And yes we explicitly set the following things:
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;
We have a work item our backlog to open this up and make this more extensible/customizable in the future.
There is a workaround around it as mentioned in janv8000's comment on this response. You need to add the following URL rewrite rule to your web server:
<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>
Obviously you need to pay attention to have all your bundles in your bundles folder or change the IsBundles
precondition accordingly.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With