MVC4捆绑缓存头(MVC4 Bundling Cache Headers)

2019-07-02 14:17发布

我想改变从包请求发送的缓存头。 目前,它是通过改变User-Agent ,但我不希望它,有没有办法改变由包请求发送的头?

快速浏览一下在后System.Web.Optimization组件可以看我的头得到设定Bundle.SetHeaders这是一个私人静态函数,所以我不认为它可能,虽然我很乐意被证明是错误的。

Answer 1:

这不是我们今天当前公开。 我们只暴露在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;

我们有一个工作项目我们积压打开此起来,使这个更具扩展性/可定制的未来。



Answer 2:

在它周围有一个替代方案中提到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相应的前提条件。



文章来源: MVC4 Bundling Cache Headers