我想改变从包请求发送的缓存头。 目前,它是通过改变User-Agent
,但我不希望它,有没有办法改变由包请求发送的头?
快速浏览一下在后System.Web.Optimization
组件可以看我的头得到设定Bundle.SetHeaders
这是一个私人静态函数,所以我不认为它可能,虽然我很乐意被证明是错误的。
我想改变从包请求发送的缓存头。 目前,它是通过改变User-Agent
,但我不希望它,有没有办法改变由包请求发送的头?
快速浏览一下在后System.Web.Optimization
组件可以看我的头得到设定Bundle.SetHeaders
这是一个私人静态函数,所以我不认为它可能,虽然我很乐意被证明是错误的。
这不是我们今天当前公开。 我们只暴露在BundleResponse可缓存属性,一个IBundleTransform可能会改变。 是的,我们明确地设置了以下几件事:
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;
我们有一个工作项目我们积压打开此起来,使这个更具扩展性/可定制的未来。
在它周围有一个替代方案中提到janv8000对这一反应评论 。 您需要将以下URL重写规则添加到您的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>
显然,你需要注意把所有的包在包文件夹或更改IsBundles
相应的前提条件。