22

バンドルリクエストから送信されたキャッシュヘッダーを変更したい。現在はさまざまですが、変更User-Agentしたくないのですが、バンドルリクエストによって送信されるヘッダーを変更する方法はありますか?

アセンブリをざっと見てみると、プライベート静的関数であるSystem.Web.Optimizationヘッダーが設定されていることがわかりBundle.SetHeadersます。間違っていることが証明されることを望んでいますが、それは不可能だと思います。

4

2 に答える 2

12

これは、現在私たちが公開しているものではありません。IBundleTransformが変更する可能性のあるBundleResponseのCacheabilityプロパティのみを公開します。そして、はい、次のことを明示的に設定します。

                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;

これを開き、将来的にこれをより拡張可能/カスタマイズ可能にするための作業項目がバックログにあります。

于 2012-10-25T17:43:34.370 に答える
1

この応答に関する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

于 2017-09-10T07:47:10.540 に答える